排序---選擇排序
阿新 • • 發佈:2018-11-23
1. 選擇排序
選擇排序(Select sort)是一種簡單直觀的排序演算法。工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。【詳情見維基百科】
選擇排序的特點:
- 執行時間與序列初始順序無關(每一次都需要從已經排序部分的末尾到整個序列的尾部掃描)
- 資料次數移動少
選擇排序的示例動畫如下。紅色表示當前最小值,黃色表示已排序序列,藍色表示當前位置。
2. 選擇排序C++#include<iostream> #include<vector> using namespace std; void SelectSort(vector<int> &array){ for(int i = 0; i < array.size(); i++){ int idxOfMin = i; for(int j = i + 1; j < array.size(); j++){ if(array[j] < array[idxOfMin]) idxOfMin= j; } swap(array[i], array[idxOfMin]); } } int main(int argc, char const *argv[]) { vector<int> a1 = {5, 9, 0, 1, 3, 6, 4, 8, 2, 7}; SelectSort(a1); for(auto &it : a1) cout<<it<<' '; cout<<endl; return 0; }