16 排序 簡單排序

2021-09-30 14:23:32 字數 988 閱讀 3897

void x_sort(elementtype a, int n)
從後往前開始遍歷:

比較相鄰的兩個元素,如果第二個元素比第乙個元素小,則進行交換

從開始一對到最後一對,對每一對相鄰元素做2的工作。這步操作完成後,最後的元素應該是最大的元素

重複以上步驟,直到倒數第乙個元素(最後乙個元素不參與上述迴圈)

持續每次對越來越少的元素重複以上的步驟,直到沒有任何一對元素需要比較

void bubble_sort(elementtype a, int n) 

}if (flag == 0) // 全程無交換,說明陣列已經有序了,不需要再進行排序了

break;

}}

穩定性:基於a[i] > a[i + 1]的判斷方式,該氣泡排序是穩定

氣泡排序可以處理單向鍊錶的排序

從第二個元素遍歷到最後乙個元素:

1. 記錄當前元素為temp

2. 從當前位置向前遍歷,如果前乙個元素大於temp,則把下個元素後移,直到前乙個個元素小於或等於temp

3. 把temp置於空出來的位置

void insertion_sort(elementtype a, int n) 

}

穩定性:基於a[i - 1] > temp的判斷方式,該插入排序是穩定

對於下標

i<

j ,如果a[i] > a[j],則稱

j>

是一對逆序對(inversion)

對於冒泡、插入排序:

對於排序:

排序 簡單排序

氣泡排序 函式名 bubble sort 功能 實現公升序排序 引數 帶排序的陣列,陣列的長度 返回值 為空 描述 時間複雜度為o n 2 輔助空間為o 1 有一種變形的氣泡排序 雞尾酒排序,它是雙向的氣泡排序,時間複雜度也為o n 2 void bubble sort int bubble,int...

排序 簡單排序

一 氣泡排序 源 void bubble sort int array,int size array if flag 0 break 二 插入排序 原理 從第二個元素開始向前比較判斷,如果比前乙個元素小,則前乙個元素往後移動一位,直到第乙個元素或者前面條件不成立,將該元素插入當前位置。源 void ...

09 排序1 排序

09 排序1 排序 25 分 給定n 個 長整型範圍內的 整數,要求輸出從小到大排序後的結果。本題旨在測試各種不同的排序演算法在各種資料情況下的表現。各組測試資料特點如下 include include includeusing namespace std const int cutoff 1000...