在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增长1个的新有序区和记录个数减小1个的新无序区。
第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;
}