1、選擇排序
演算法步驟:
1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
2. 再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
3. 重複第二步,直到所有元素均排序完畢
演算法實現:
void selectionsort(int *array, int len)
for(i = 0; i < len; i++)
}//移動最小元素,到已排序列的末尾
swap(array,i,min);
}}
2、插入排序
演算法步驟:
將第一待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當成是未排序序列。
從頭到尾依次掃瞄未排序序列,將掃瞄到的每個元素插入有序序列的適當位置。(如果待插入的元素與有序序列中的某個元素相等,則將待插入元素插入到相等元素的後面。)
演算法實現:
void insertsort(int *array, int len)
}//迴圈遍歷完成後,得到待排元素的最終位置,將它插入
array[k] = temp;
}}
3、氣泡排序法
演算法步驟:
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
針對所有的元素重複以上的步驟,除了最後乙個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
演算法實現:
void bubblesort(int *array, int len)}}}
4、小結
編譯步驟:
0.1 解壓縮:tar -zxvf sort-1.0.tar.gz
0.2 編譯:gcc -std=c99 -wall -g sort.c -o sort
0.3 執行:./sort
資料結構與演算法 十五 排序演算法
排序演算法是最基本的演算法之一,也是平時最常見 最常用的演算法。對於乙個未排序的序列,其中a 2 和a 5 的關鍵字值相等,經過排序後,若原a 2 的位置仍在原a 5 之前,那麼稱該排序方法是穩定的 若原a 5 的位置反在原a 2 的前面,那麼稱該排序方法是不穩定的。只要有一組關鍵字發生類似的情況,...
第十五周 專案一 驗證演算法 快速排序
檔名稱 axiao15.cpp 作 者 李瀟 完成日期 2017 年 12 月 26 日 版 本 號 v1.0 輸入描述 無需輸入 程式輸出 實現各種演算法的函式的測試結果 1.以第1個元素作為基準 include define maxsize 20 typedef int keytype 定義關鍵...
第十五周 專案一 驗證演算法(4)快速排序
檔名稱 a 作 者 張翠平 完成日期 2017 年 12 月 9 日 版 本 號 v1.0 問題描述 驗證快速排序演算法 輸入描述 程式輸出 排序後的結果 main.cpp 以第乙個元素為基準 include define maxsize 20 typedef int keytype 定義關鍵字型別...