資料結構 排序

2021-08-28 03:06:39 字數 1642 閱讀 3633

說明

此**檔案包含排序型別:冒泡、選擇、插入、shell、快速。

**

/*

** sort create by yubo.wang 2018.9.13

** 此檔案包含排序型別:冒泡、選擇、插入、shell、快速。

*/#include #include /* 氣泡排序

* 通過無序區中相鄰記錄關鍵字間的比較和位置交換,使最小的關鍵字記錄如氣泡一樣逐漸漂浮至水面

* 時間複雜度o(n²)

* 穩定

*//*

** 第1種:每一輪從前面往最後比較相鄰把最大的往後面推

*/int sort_bubble_1(int string,int len)

} }return 0;}/*

** 第2種:每一輪從從最後往前面比較相鄰把最小的往前面推,並記錄交換標誌

*/int sort_bubble_2(int string,int len)

} if(0 == exchange)//本趟沒有發生交換,說明已經有序所以退出

}return 0;

}/* 選擇排序

* 每步從待排序的記錄中選出最小的記錄,順序放在已排序的記錄序列的最前,直到全部排序完成。

* 時間複雜度o(n²)

* 不穩定,元素位置改變

*//*

** 第1種:每一輪找到比前面小的元素只進行記錄不進行交換,找完後再進行交換。找到最小的放在第一位

*/int sort_select_1(int string,int len)

string[j+1]=temp;//說明temp找到了準確的位置並開始插入

} return 0;}/*

** 第2種:從前面往後,一直往前比較相鄰,前面的大於後面就交換

*/int sort_insert_2(int string,int len)

} return 0;}/*

* shell排序

* 把記錄按下標的一定增量d分組,對每組記錄採用直接插入排序方法進行排序,隨著增量逐漸減小,所分成的組包含的記錄越來越多,

* 到增量減小到為1時,整個資料合成一組,構成一組有序記錄。

* 時間複雜度o(nlog₂n)

* */

int sort_shell_1(int string,int n)

} }return 0;

}int sort_shell_2(int string,int n)

string[i]=tmp;

sort_quick(string, s, i-1);//對左區間遞迴排序

sort_quick(string, i+1, len);//對右區間遞迴排序 }}

int main(void)

; int len = sizeof(string)/sizeof(int);

printf("len=%d\n",len);

sort_quick(string, 0, len);

for(i=0; iprintf("\n");

return 0;

}/* 歸併排序**

**//* 基數排序**

**//* 堆排序**

**/

資料結構 排序

小小總結了下 希望別不記得 排序型別 排序方法 平均時間 最壞時間 最好時間 穩定空間 插入直接插入 o n2 o n2 o n 穩定o 1 希爾排序 o n3 2 增量序列最後為1,只有公因子1 不穩o 1 選擇簡單選擇 o n2 o n2 o n 穩定o 1 堆排序o n lb n o n lb...

資料結構 排序

郝斌版 資料結構 學習筆記 冒泡 公升序,12比,大放後面,再23比,直至最大的在最後面 插入 2,3,4,依次插入值,保證插入值後的序列為有序的 選擇 後面所有的最小值依次排到最前 快速排序 歸併排序 22排,44排,88排.排序演算法標準 時間,空間,穩定性 排序和查詢的關係 排序是查詢的前提,...

資料結構 排序

1.希爾排序 shellsort 增量序列d n為要排序數的個數 void shellinsertsort int a,int n,int dk n個要排序的數,dk是增量 2 堆排序 已知h s m 除了h s 外均滿足堆的定義 調整h s 使其成為大頂堆.即將對第s個結點為根的子樹篩選,para...