當前位置:首頁 » 操作系統 » 演示演算法

演示演算法

發布時間: 2023-02-06 10:17:10

『壹』 一個簡單的演算法演示程序(java語言實現)

還真敢要,別說5分了,5塊錢也沒人幫你做,自己想辦法吧,懶鬼

『貳』 題目1:一個簡單的演算法演示程序(JAVA語言實現)

1. 選擇一個演算法(提供選擇見下),利用各種方法(圖形、動畫等)演示演算法的演示過程。
2. 可以進行手動演示,也可以自動步進式演示。
3. 允許用戶設置演算法的各個輸入參數,以及自動步進式演示中的時間間隔。
4. 不同的演算法輸入要求見下。
界面要求:
1. 盡量使用圖形界面實現,要符合日常軟體使用規范來設計菜單和界面。
2. 如果無法實現圖形界面,則在命令行方式下也需要提供菜單,方便用戶操作。
其他要求:
1. 標識符命名遵循Windows命名規范。
2. 能夠注意各種異常處理,注重提高程序運行效率。
提交內容:
1. 全部源代碼。
2. 軟體設計和使用說明書(UML類圖;實現的功能、主要技術;使用幫助文檔)
參考演算法:
1. 最小生成樹演算法:Prim演算法、Kruskal演算法。允許以下方式輸入一個圖形:繪制圖形、輸入鄰接矩陣、輸入邊及其關聯的頂點。要求在圖形方式下進行演示演算法執行步驟。
2. 單源最短路演算法:Dijkstra演算法。允許以下方式輸入一個圖形:繪制圖形、輸入鄰接矩陣、輸入邊及其關聯的頂點。要求在圖形方式下進行演示演算法執行步驟。
3. 最優編碼演算法:Huffman編碼演算法。允許用戶輸入一段英文文字,或者打開一個txt文檔(英文內容),據此文檔內容進行編碼。要求動態列出每個字元的出現概率統計結果以及對應編碼。
4. 其他可供演示的具有一定難度的演算法,如關鍵路徑問題、有向圖的極大連通分支等。

『叄』 數據結構 6.8 中序線索鏈表遍歷演算法演示

希賽教育計算機專業考研專業課輔導招生

希賽教育計算機專業考研專業課輔導視頻

希賽教育計算機考研專業課在線測試系統

void InOrderTraverse_Thr(BiThrTree Thead void (*Visit)(ElemType e)){ // Thead 指向中序線索鏈表中的頭結點 頭結點的左指針 Lchild // 指向二叉樹的根結點 頭結點的右線索 Rchild 指向中序遍歷 // 訪問的最後一個結點 本演算法對此二叉樹進行中序遍歷 對 // 樹中每個數據元素調用函數 Visit 進行訪問操作 p = Thead >Lchild; // p 指向二叉樹的根結點 while (p!= Thead) {// 空樹或遍歷結束時 p==Thead while (p >LTag==Link) p = p >Lchild; Visit(p >data); // 訪問其左子樹為空的結點 while (p >RTag==Thread && p >Rchild!=Thread) { p = p >rchild; Visit(p >data);// 訪問 右線索 所指後繼結點 } // while p = p >Rchild; // p 進至其右子樹根 } // while} // InOrderTraverse_Thr

演算法的執行過程如動畫所示

lishixin/Article/program/sjjg/201311/22592

『肆』 Java演算法演示系統

//哈哈,我做了一種排序的GUI演示
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SortX extends JFrame{
private JLabel[]n;
private JButton start;
private JTextField in;
public SortX(){
this.getContentPane().setLayout(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(488,200);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setAlwaysOnTop(true);
start = new JButton("start sort");
JLabel l = new JLabel("輸入10組內數字:");
l.setBounds(10,18,120,20);
add(l);
in=new JTextField("10,212,7,456,33,2,55,6,50,97");
in.setBounds(118,18,256,20);
add(in);
start.setBounds(380,18,88,20);
add(start);
start.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){sort();}});
n=new JLabel[10];
for(int i=0; i<n.length; i++){
n[i]=new JLabel();
n[i].setFont(new Font("",Font.BOLD,14));
n[i].setForeground(Color.gray);
n[i].setHorizontalAlignment(JLabel.CENTER);
add(n[i]);
}
}
private void sort(){
setTitle("排序演示");
try{
String src = in.getText();
src=src.replaceAll("[^0-9,]","");
String[] sp = src.split(",");
final int[] v = new int[sp.length];
int left=0,w=40,offx=0,offy=95;
for(int i=0; i<n.length;i++)n[i].setText(null);
for(int i=0; i<sp.length; i++){
n[i].setText(sp[i]);
v[i] = Integer.valueOf(sp[i]);
n[i].setSize(w,20);
n[i].setLocation((left+=w)+offx,offy);
}
new Thread(){
public void run(){
start.setEnabled(false);
s(500);
try{
for(int i=0; i<n.length-1; i++){
if(v[i]>v[i+1]){
JLabel l=n[i];
n[i]=n[i+1];
n[i+1]=l;
n[i].setForeground(Color.blue);
for(int k=0; k<7; k++){
n[i].setVisible(k%2==0);
s(123);
}
swap(n[i],n[i+1]);
n[i].setForeground(Color.gray);
v[i]+=v[i+1];
v[i+1]=v[i]-v[i+1];
v[i]-=v[i+1];
i-=i==0?1:2;
}
}
}catch(Exception e){}
start.setEnabled(true);
}

private void swap(JLabel a, JLabel b) {
JLabel t = a;
a=b;
b=t;
Point pa=a.getLocation();
Point pb=b.getLocation();
int x1,x2,y1,y2;
x1=pa.x;
x2=pb.x;
y1=pa.y;
y2=pb.y;
int delay=10;
while(x1<(x1+x2)/2){
a.setLocation(++x1,y1++);
b.setLocation(--x2,y2--);
s(delay);
}
while(x1<pb.x){
a.setLocation(++x1,y1--);
b.setLocation(--x2,y2++);
s(delay);
}
a.setLocation(pb);
b.setLocation(pa);
}

private void s(int i) {
try {
sleep(i);
} catch (Exception e) {}
}
}.start();
}catch(Exception e){e.printStackTrace();setTitle("請檢查輸入的數據,只能輸入10組哦");}
}
public static void main(String[] args) {
new SortX().setVisible(true);
}
}

『伍』 RSA加密演算法簡易演示

RSA演算法安全性本質是三大數學困難問題之一也就是大數分解問題,因為目前尚沒有一種有效的方法可以在短時間內分解兩個大素數的乘積。驗證步驟如上面所說的,原理書上有,具體程序實現簡單講一下

  1. 判斷質數,這是基本水平,可以窮舉也可以建表,按自己喜好

  2. 這一步是計算兩個大素數乘積沒什麼好說的

  3. 判斷兩個數互質,一般採用歐幾里得演算法,輾轉相除直到得到gcd(e1,m)=1。當然你也可以窮舉公因數一直到sqrt(min{e1,m})

  4. 計算乘法逆元是依靠廣義歐幾里得演算法,乘法逆元的意思是形如a*a1 ≡ 1(mod m)這樣的(因為這里的群的乘法定義就是數學乘法),a和a1互為彼此模m的逆元,記作a1=a^-1 mod m,只有gcd(a,m)=1時才有唯一解否則無解。

    計算方法是廣義歐幾里得除法,設r0=m,r1=a,s0=1,s1=0,t0=0,t1=1;

    計算ai=[r(i-1)/ri],r(i+1)=r(i-1)-airi,s(i+1)=s(i-1)-aisi,t(i+1)=t(i-1)-aiti,直到ri=0

    舉例如a=7,m=13,計算a^-1 mod m:

    a1=[13/7]=1,r2=r0-a1r1=6,s2=s0-a1s1=1,t2=t0-a1t1=-1;

    a2=[7/6]=1,r3=r1-a2r2=1,s3=s1-a2s2=-1,t3=t1-a2t2=2;

    a3=[6/1]=6,r4=r2-a3r3=0.

    取s=s3=-1,t=t3=2,則有7*2-1*13=1,故a^-1mod m=t=2。

    把上面的方法寫成C++演算法應該很簡單

5和6都是計算同餘沒什麼好說的,記得要用到a^e≡b^e(mod m)化簡

要畢業了還搞不懂逆元有點拙計啊,回去好好看看離散數學吧

『陸』 數組倒序動態演示的演算法

倒序數組的演算法 倒序數組的演算法(C# 版),代碼如下: view sourceprint?01#region 倒序數組 02 03 static void SwapNumArray() 04 { 05 //int[] items = new int[] { 31, -41, 59, 26, -53, 58, 97, -93, -23, 84 }; 06 07 //int[] items = new int[] { 31, -41,59 }; 08 int[] items = new int[] { 31, -41, 59, 26 ,53}; 09 10 int middleIndex = 0; 11 12 bool isDouble = true; 13 if (items.Length % 2 == 0) 14 { 15 //偶數 16 middleIndex = items.Length / 2 - 1; 17 } 18 else19 { 20 isDouble = false; 21 middleIndex = items.Length / 2; 22 } 23 int loopCount = isDouble == true ? middleIndex : (middleIndex - 1); 24 int temp = 0; 25 for (int i = 0; i <= loopCount; i++) 26 { 27 //交換items[i]和items[items.Length -1 -i] 28 temp = items[items.Length - 1 - i]; 29 items[items.Length - 1 - i] = items[i]; 30 items[i] = temp; 31 } 32 foreach (int item in items) 33 { 34 Console.Write(item + ","); 35 } 36 Console.ReadKey(); 37 } 38 39 #endregion

熱點內容
php辦公系統 發布:2025-07-19 03:06:35 瀏覽:895
奧德賽買什麼配置出去改裝 發布:2025-07-19 02:53:18 瀏覽:37
請與網路管理員聯系請求訪問許可權 發布:2025-07-19 02:37:34 瀏覽:185
ipad上b站緩存視頻怎麼下載 發布:2025-07-19 02:32:17 瀏覽:839
phpcgi與phpfpm 發布:2025-07-19 02:05:19 瀏覽:523
捷達方向機安全登錄密碼是多少 發布:2025-07-19 00:57:37 瀏覽:689
夜魔迅雷下載ftp 發布:2025-07-19 00:39:29 瀏覽:97
增值稅票安全接入伺服器地址 發布:2025-07-19 00:20:45 瀏覽:484
solidworkspcb伺服器地址 發布:2025-07-18 22:50:35 瀏覽:820
怎麼在堆疊交換機里配置vlan 發布:2025-07-18 22:42:35 瀏覽:628