简单选择排序(Simple Selection Sort)就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1≤i≤n)个记录交换之。
核心代码
1 void SelectSort(int arr[], int len)
2 {
3 int i;
4 int j;
5 int min;
6
7 //检测参数
8 assert(arr!=NULL && len>0);
9
10 for(i=0; i<len-1; ++i)
11 {
12 min = i;
13 for(j=i+1; j<len; ++j)
14 {
15 if(arr[j] < arr[min])
16 {
17 min = j;
18 }
19 }
20 //把最小值放在对应位置
21 if(min != i)
22 {
23 arr[min] = arr[min] ^ arr[i];
24 arr[i] = arr[min] ^ arr[i];
25 arr[min] = arr[min] ^ arr[i];
26 }
27 }
28 }
算法分析:
最好时间复杂度:O(n^2)
平均时间复杂度:O(n^2)
最坏时间复杂度:O(n^2)
空间复杂度:O(1)
稳定性:不稳定
简单选择排序在性能上要略优于冒泡排序。