基本思想
每一趟在待排序元素中选取关键字最小的元素加入有序子序列。
算法代码
#include<iostream>usingnamespacestd; //选择排序 voidSelectSort(intnums[],intn){ inti,j,min; for(i=0;i<n-1;i++){ //一共需要进行 n-1 趟 min=i; //记录最小元素的下标 for(j=i+1;j<n;j++){ //在 nums[i...n-1] 中选择最小的元素下标 if(nums[min]>nums[j]){ min=j; //更新最小元素下标 } } if(min!=i){ swap(nums[i],nums[min]);//将当前元素和找到的最小元素进行交换 } } } //交换函数 voidswap(int&a,int&b){ inttemp; temp=a,a=b,b=temp; } //打印数组 voidprintNum(intnumbers[],intn){ for(inti=0;i<n;i++){ cout<<numbers[i]<<" "; } } intmain() { intnumbers[10]={3,44,38,5,47,15,36,26,27,2}; intn=sizeof(numbers)/sizeof(numbers[0]); //数组长度 SelectSort(numbers,n); //调用 InsertSort 函数进行插入排序 printNum(numbers,n); //打印数组 return0; }