每轮找出一个最小的,与原来的位置比较,如果不是同一个下标,就将其互换,再从小到达继续排序。
初始关键字 [49 38 65 97 76 13 27 49]
第一趟排序后 13 [38 65 97 76 49 27 49]
第二趟排序后 13 27 [65 97 76 49 38 49]
第三趟排序后 13 27 38 [97 76 49 65 49]
第四趟排序后 13 27 38 49 [76 97 65 49 ]
第五趟排序后 13 27 38 49 49 [97 65 76]
第六趟排序后 13 27 38 49 49 65 [97 76]
第七趟排序后 13 27 38 49 49 65 76 [97]
最后排序结果 13 27 38 49 49 65 76 97
void Select_Sort(int *arr,int* n)
{
for(int i=0;i<n-1;i++)
{
int min=i; //设其最小数*为每轮的第一个数
for(int j=i+1;j<n;j++)
{
i*f(arr[min]>ar*r[j]) //判断最小值是否改变
min=j;
}
if(min!=i) //若最小数改变,位置互换
{
int temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
}
}
选择排序的平均复杂度为O(n²)