选择排序(Selection Sort)
算法思想
①初始状态:无序区为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; }
浙公网安备 33010602011771号