兩個排序演算法比較

2021-04-17 22:23:49 字數 1053 閱讀 4896

一.起泡法排序

起泡法排序:掌握兩個重點,(1)n個數排序需要進行n-1趟排序;(2)第j趟排序需進行n-j次比較(交換).

程式如下:定義一維陣列,這裡a[0]不用,儲存a[1]...a[5]共5個元素,因此n為5.

#include

main()

}for(i=1;i<=5;i++)

printf("/n%d",a[i]);

}上述程式中,第乙個迴圈用於控制輸入,第二個迴圈用於控制進行排序的趟數,第三個迴圈則用於每一趟排序中需進行比較交換的次數.

二.選擇排序

此排序演算法兩種理解:

1 將n個數中最首的元素與其它元素比較,令p始終指向首元素所在的位置,即使它與其它元素交換了位置;n個元素共進行n-1輪排序,進行完第一輪排序後,將剩下n-1個元素中的首元素與與其它元素比較,令p始終指向首元素所在的位置,即使它與其它元素交換了位置;。。。。。

2.每次將最小或最大的數交換到(相對)最首的位置,依次迴圈,執行n-1次。

1。main()

for(i=0;i<10;i++)

if(i!=p)

printf("%d",a[i]);

printf(",");}}

2.void sort(int array,int n)

printf("/n");

for(i=0;i<5;i++)

printf("%d,",a[i]);

for(i=0;i<5;i++)

a[i]=key;

for(i=0;i<=5;i++)

printf("%d,",a[i]);

printf("/n");

}本程式首先對陣列a中的10個數從大到小排序並輸出排序結果。然後輸入要插入的整數n。再用乙個for語句把n和陣列元素逐個比較,如果發現有n> a[i]時,則由乙個內迴圈把i以下各元素值順次後移乙個單元。後移應從後向前進行(從a[9]開始到a[i]為止)。後移結束跳出外迴圈。插入點為i,把n賦予a[i]即可。如所有的元素均大於被插入數,則並未進行過後移工作。此時i=10,結果是把n賦於a[10]。最後乙個迴圈輸出插入數後的陣列各元素值。

兩個排序演算法

然後貼 1 int num 10 2 time t tms 3 srand unsigned int time tms 生成種子 4for int i 0 i 10 i 生成陣列元素為10 的陣列59 1011 氣泡排序 12for int i 0 i 10 1 i 1324 25 1 int nu...

如何比較兩個演算法的效率

在學演算法的時候,經常會涉及分析演算法的複雜度和效率的問題,按照書本上的理論通常也能夠大概推出個結論。通常都是根據演算法中重要的語句去推算,例如for 迴圈語句等。那麼有沒有可以用程式去真正上機實驗的辦法呢?其實方法也是很簡單,如果我們用的是c語言,可以利用 include 檔案中的ftime 函式...

vim 比較兩個檔案

1.使用vim的比較模式開啟兩個檔案 vim d file1 file2 或vimdiff file1 file2 2.如果已經開啟了檔案file1,再開啟另乙個檔案file2進行比較 vert diffsplit file2 如果沒有用vert命令,diffsplit則會分上下兩個視窗。3.如果已...