selection_Sort(選擇排序演算法)

yangkuang發表於2021-01-31

1.選擇排序演算法

選擇排序演算法是在一組數中有選擇的從大到小或者小到大進行排序,其邏輯是:

在一組資料中從第一個數開始比較出該組資料中最小數,然後將其與第一個數互換位置,然後第二個數再依次從後面的數再進行比較,找出全陣列中第二小的數,再與第二個數互換位置,剩餘的數依次類推,即可得出陣列的排序。列如:

陣列{6,3, 5, 9, 4, 7, 8}

首先以[0 , 7)分別為上列陣列元素的索引

第一次比較以i = 0(就是6的索引)將6與{3, 5, 9, 4, 7, 8}中的元素進行比較(如:6大於3,則將比較索引1賦值給i,再講 i = 1的數與後面的數進行比較),找出的最小值為3,則將3與6位置互換,依次就完成了選擇排序演算法的整個邏輯。其程式碼實現過程如下(c++):

#include <iostream>

using namespace std;

template<typename T>
void selectionSort(T arr[], int n){

    for(int i = 0 ; i < n ; i ++){

        int minIndex = i;
        for( int j = i + 1 ; j < n ; j ++ )
            if( arr[j] < arr[minIndex] )
                minIndex = j;

        swap( arr[i] , arr[minIndex] );
    }
}

如下是測試:

int main() {

    // 測試模板函式,傳入整型陣列
    int a[10] = {2,6,12,32,54,77,53,45,31,200};
    selectionSort( a , 10 );
    for( int i = 0 ; i < 10 ; i ++ )
        cout<<a[i]<<" ";
    cout<<endl;

    // 測試模板函式,傳入浮點數陣列
    float b[4] = {4.4,3.3,2.2,1.1};
    selectionSort(b,4);
    for( int i = 0 ; i < 4 ; i ++ )
        cout<<b[i]<<" ";
    cout<<endl;

    // 測試模板函式,傳入字串陣列
    string c[4] = {"D","C","B","A"};
    selectionSort(c,4);
    for( int i = 0 ; i < 4 ; i ++ )
        cout<<c[i]<<" ";
    cout<<endl;
    return 0;
}

其輸出結果為:

selection_Sort(選擇排序演算法)

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章