總結 幾種常見的內部排序方法

2021-04-12 18:06:58 字數 2177 閱讀 5078

//直接插入排序,演算法簡潔,容易實現,時間複雜度o(n2),但較穩定,在基本有序和size很小

//時是最好的排序方法

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

#include "time.h"

#define size 10001

main()

end=clock();

for(i=1;i//希爾排序,屬於插入排序,時間效能比較好,但不穩定

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

#include "time.h"

#define size 10001

shellinsert(int num[size],int dk)

}main()

if(i<=m)

for(;i<=m;i++,k++)

tr[k]=sr[i];

if(j<=n)

for(;j<=n;j++,k++)

tr[k]=sr[j];

}msort(int sr[size],int tr1[size],int s,int t)

}main()

num[s]=rc;

}main()

end=clock();

for(i=1;i//氣泡排序,屬於借助交換進行排序的方法,時間複雜度為o(n2)

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

#include "time.h"

#define size 10001

main()

end=clock();

for(i=1;i//折半插入排序,屬於簡單排序,較之直接插入排序減少了關鍵字比較的次數,而移動的次數不變

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

#include "time.h"

#define size 10001

main()

end=clock();

for(i=1;i//二路插入排序,屬於簡單排序,較之折半插入排序又減少了記錄的移動次數,約為pow(n,2)/8

//但缺點是要付出多一倍的儲存空間,並且當num[1]的元素為最小或最大,就完全失去優越性

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

#include "time.h"

#define size 10000

main()

else

temp[(index+1)%size]=num[i];

break;}}

}}for(i=0;i以下兩種方法都用於記錄所佔空間較大時,因為他們都採取了以修改指標來代替移動記錄

//表插入排序,屬插入排序,該方法的時間複雜度為o(n2)

#include "stdio.h"

#include "stdlib.h"

#include "conio.h"

#include "time.h"

#define size 10001

void tablesort(int num[size],int temp[size])

else if(num[i]<=num[temp[0]])

else

indexpr=index;}}

}}void arrange(int num[size],int temp[size])

node;

distribute(node array[size],int i,int f[radix],int e[radix])

array[size-1].next=0;

for(i=0;iend=clock();

for(i=array[0].next;i;i=array[i].next)

printf("%d/n",array[i].keys[0]);

printf("time:%.20f",(end-start)/clk_tck);

getch();

}

幾種常見的排序方法。

氣泡排序 氣泡排序是每次都從第乙個元素開始,到最後的k 每迴圈完一次,最後乙個元素位置固定。include include int main void for i 0 i n 1 i k for i 0 i n i return 0 選擇排序 選擇排序每一次迴圈玩從正數的第i個元素位置確定。incl...

幾種常見的排序方法

氣泡排序是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。以4,2,3,1為例,第一次迴圈4與2比較...

幾種常見的排序演算法總結

所謂排序,就是使一串記錄,按照其中的某個或某些關鍵字的大小,遞增或遞減的排列起來的操作。排序演算法,就是如何使得記錄按照要求排列的方法。排序演算法在很多領域得到相當地重視,尤其是在大量資料的處理方面。乙個優秀的演算法可以節省大量的資源。在各個領域中考慮到資料的各種限制和規範,要得到乙個符合實際的優秀...