選擇排序(Selection Sort)

算法思想

n個記錄的文件的 直接選擇排序可通過n-1趟直接 選擇排序獲得有序結果:
①初始狀態:無序區爲R[1..n],有序區爲空。
②第1趟排序
在無序區R[1..n]中選出關鍵字最小的記錄R[k],將它與無序區的第1個記錄R[1]交換,使R[1..1]和R[2..n]分別變爲記錄個數增長1個的新有序區和記錄個數減小1個的新無序區。
……
③第i趟排序
第i趟排序開始時,當前有序區和無序區分別爲R[1..i-1]和R(i..n)。該趟排序從當前無序區中選出關鍵字最小的記錄 R[k],將它與無序區的第1個記錄R交換,使R[1..i]和R分別變爲記錄個數增長1個的新有序區和記錄個數減小1個的新無序區。
 

示例代碼

#include<iostream>

using namespace std;

int data[8]={5,3,1,2,8,6,4,7};

int mySelectionSort(int ds[],int length){
    for(int i=0;i<length;i++){
        int min=ds[i];
        int key=i;
        for(int j=i+1;j<length;j++){
            if(ds[j]<min) {
                min=ds[j];
                key=j;
            }
        }
        int temp=ds[i];
        ds[i]=ds[key];
        ds[key]=temp;        
    }
    return 0;
}

int main(){
    mySelectionSort(data,8);
    for(int i=0;i<8;i++)
        cout<<data[i]<<" ";
    getchar();
    return 0;
}
相關文章
相關標籤/搜索