插入、冒泡與選擇這三個排序演算法的平均時間複雜度都是o(n^2),插入和冒泡的最優時間複雜度都是o(n),選擇排序的最優時間複雜度還是o(n^2),三者最差的時間複雜度都是o(n^2)。其中插入與氣泡排序是穩定的,選擇排序是不穩定的。
排序演算法穩定,是指能保證排序前2個相等的數在序列的前後位置順序和排序後他們兩個的前後位置順序相同。即:a=b,排序前a在b之前,排序後a還應該在b之前。(相對位置)
一、插入排序
思想:預設第乙個元素為有序序列,將其後的元素與該序列中的元素進行比較後,進行插入排序
void insertsort(vector&a)
}}
三、選擇排序
思想:每次選出陣列中最大或者最小的元素放入到陣列的頭部或尾部
void selectsort(vector&a)
}swap(a[i], a[index]);
}}
四、shell排序
思想:shell排序是將序列分成多個子串行,然後分別對每個子串行進行插入排序
一種可能的實現方法:將陣列分成n/2個長度為2的子串行,每個序列中兩個元素下標相差n/2
void shellsort(vector&a)}}
}}
選擇 插入 氣泡排序
選擇 插入 氣泡排序 說明 選擇排序 selection sort 插入排序 insertion sort 與氣泡排序 bubble sort 這三個排序方式是初學排序所必須知道的三個基本排序方式,它們由於速度不快而不實用 平均與最快的時間複雜度都是o n2 然而它們排序的方式確是值得觀察與 的。解...
排序 冒泡 選擇 插入
三種簡單排序 時間複雜度 o n 空間複雜度 o 1 氣泡排序的基本思想是通過比較兩個相鄰的記錄之間的比較和交換,使關鍵碼比較小的繼續逐漸從底部移向頂部 上公升 關鍵碼比較大的逐漸從頂部移向底部 沉底 冒泡由此得名。演算法思想 設有a 1 a n 的n個資料,氣泡排序的過程可以描述為 1 首先將相鄰...
選擇 插入 氣泡排序
size medium 選擇排序 將要排序的物件分作兩部份,乙個是已排序的,乙個是未排序的,從後端未排序部份選擇乙個最小值,並放入前端已排序部份的最後乙個,例如 排序前 70 80 31 37 10 1 48 60 33 80 1.1 80 31 37 10 70 48 60 33 80 選出最小值...