十五 排序演算法(一)

2021-07-03 01:23:27 字數 1255 閱讀 3677

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 定義關鍵字型別...