**說明
**是我親自碼的,除錯通過的,**中有演算法思想和詳細的注釋,一目了然。
專案已經上傳到我的github:
專案中還有另外得九種排序演算法的c++實現**以及其思想。
1 選擇排序:
2 插入排序:
3 氣泡排序:
4 希爾排序:
5.1 歸併排序遞迴實現:
5.2 歸併排序非遞迴實現:
6.1 快速排序遞迴實現:
6.2 快速排序非遞迴實現:
7 堆排序:
8 計數排序:
9 桶排序:
10 基數排序:
術語說明
1、穩定排序:如果 a 原本在 b 的前面,且 a == b,排序之後 a 仍然在 b 的前面,則為穩定排序。
2、非穩定排序:如果 a 原本在 b 的前面,且 a == b,排序之後 a 可能不在 b 的前面,則為非穩定排序。
3、原地排序:原地排序指在排序過程中不申請多餘的儲存空間,只利用原來儲存待排資料的儲存空間進行比較和交換的資料排序。
4、非原地排序:需要利用額外的陣列來輔助排序。
5、時間複雜度:乙個演算法執行所消耗的時間。
6、空間複雜度:執行完乙個演算法所需的記憶體大小。
效能說明
時間複雜度:o(n^2)
空間複雜度:o(1)
非穩定的原地排序
void sort::sort_select(std::vector& data)
}// 此時的min是無序序列中最小值的下標,將其放入有序序列區.
auto temp = data.at(i);
data.at(i) = data.at(min);
data.at(min) = temp;
}}
選擇排序C 實現
演算法描述 首先找到陣列中最小的元素,將它與陣列第乙個元素進行交換,接著在剩下的元素中找的最小的元素與陣列第二個元素進行交換,如此往復,直到整個陣列都排序。下面給出整型陣列的實現,其他複雜型別只需實現自定義的比較函式即可 include include using namespace std con...
C 實現選擇排序
選擇排序 selectsort 是一種簡單直觀的排序演算法。演算法原理 第一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小 大 元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的資料元素的個數為零。選擇排序是不穩定的排序方法。...
C 實現選擇排序
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...