八大排序演算法

2021-09-25 06:49:38 字數 3809 閱讀 6382

隨機產生整數樣本,進行8種排序,並比較各種排序排序演算法的執行時間,如果執行時間為0,可考慮增大樣本,如加大至5000或10000.

對8種排序演算法的資料元素比較次數和移動次數進行比較。

輸出8種排序演算法每一趟排序的輸出結果。

#include#include#include#include#define maxsize 5000

typedef int keytype;

int count1=0,count2=0;

int chishu1=0,chishu2=0,chishu3=0,chishu4=0;

typedef structredtype;

typedef struct sqlist;

void initsqlist(sqlist *l)

void creatsqlist(sqlist &l)

}void copysqlist(sqlist l,sqlist &l1)

void outputsqlist(sqlist l1 )

}int lt(keytype e1,keytype e2)

l.r[j+dk]=l.r[0];

} chishu2++;

printf("\n第%d趟排序:\n",chishu2);

outputsqlist(l);

count1++; }

void shellsort(sqlist &l,int dlta,int t)

l.r[low]=l.r[high];

count2++;

while(low0;i--)

heapadjust(h,i,h.length);

for(i=h.length;i>1;i--)}/

int main()

outputsqlist(l_bak);

while(flag)

printf("\n");

outputsqlist(l);

duration=(double)(finish-start);

printf("\nthe sort spend :%lf seconds\n",duration);

printf("\n這個排序共比較%4d次,共移動元素%4d次",count1,count2);

} return 1;

}

測試結果如下:

測試結果:

3 23 6 32 40 57

7 18 57

請選擇:

1.insertsort

2.shellsort

3.quicksort

4.heapsort

5.exit

1 now is in insertsort............

第1趟排序:

3 6 23 32 40 57

7 18 57

第2趟排序:

3 6 7 23 32 40

57 18 57

第3趟排序:

3 6 7 18 23 32

40 57 57

3 6 7 18 23 32

40 57 57

the sort spend :0.000000 seconds

這個排序共比較 9次,共移動元素 12次

請選擇:

1.insertsort

2.shellsort

3.quicksort

4.heapsort

5.exit

2 now is in shellsort............

第1趟排序:

3 23 6 18 40 57

7 32 57

第2趟排序:

3 18 6 23 7 32

40 57 57

第3趟排序:

3 6 7 18 23 32

40 57 57

3 6 7 18 23 32

40 57 57

the sort spend :6.000000 seconds

這個排序共比較 16次,共移動元素 7次

請選擇:

1.insertsort

2.shellsort

3.quicksort

4.heapsort

5.exit

3 now is in quicksort............

第1趟排序:

3 23 6 32 40 57

7 18 57

第2趟排序:

3 18 6 7 23 57

40 32 57

第3趟排序:

3 7 6 18 23 57

40 32 57

第4趟排序:

3 6 7 18 23 57

40 32 57

第5趟排序:

3 6 7 18 23 32

40 57 57

第6趟排序:

3 6 7 18 23 32

40 57 57

3 6 7 18 23 32

40 57 57

the sort spend :10.000000 seconds

這個排序共比較 22次,共移動元素 22次

請選擇:

1.insertsort

2.shellsort

3.quicksort

4.heapsort

5.exit

4 now is in heapsort............

第1趟排序:

23 40 57 32 3 6

7 18 57

第2趟排序:

18 40 23 32 3 6

7 57 57

第3趟排序:

7 32 23 18 3 6

40 57 57

第4趟排序:

6 18 23 7 3 32

40 57 57

第5趟排序:

3 18 6 7 23 32

40 57 57

第6趟排序:

3 7 6 18 23 32

40 57 57

第7趟排序:

6 3 7 18 23 32

40 57 57

第8趟排序:

3 6 7 18 23 32

40 57 57

3 6 7 18 23 32

40 57 57

the sort spend :14.000000 seconds

這個排序共比較 8次,共移動元素 20次

請選擇:

1.insertsort

2.shellsort

3.quicksort

4.heapsort

5.exit

八大排序演算法

1.直接插入排序 原理 將陣列分為無序區和有序區兩個區,然後不斷將無序區的第乙個元素按大小順序插入到有序區中去,最終將所有無序區元素都移動到有序區完成排序。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。實現 void insertsort node l,int length void shell ...

八大排序演算法

一 概述 八大排序演算法包括 1 插入排序之直接插入排序 straight insertion sort 2 插入排序之希爾排序 shells sort 3 選擇排序之簡單選擇排序 selection sort 4 選擇排序之堆排序 heap sort 5 交換排序之氣泡排序 bubble sort...

八大排序演算法

排序的定義 輸入 n個數 a1,a2,a3,an 輸出 n個數的排列 a1 a2 a3 an 使得a1 a2 a3 an in place sort 不占用額外記憶體或占用常數的記憶體 插入排序 選擇排序 氣泡排序 堆排序 快速排序。out place sort 歸併排序 計數排序 基數排序 桶排序...