1. 程式人生 > >排序---選擇排序

排序---選擇排序

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; }