說明
此**檔案包含排序型別:冒泡、選擇、插入、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...