排序算法_选择排序
一、算法描述:
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
- 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
- 以此类推,直到所有元素均排序完毕。
二、图示
三、性能描述
数据结构 :数组
最差时间复杂度 :O(n2)
最优时间复杂度 :O(n2)
平均时间复杂度 :O(n2)
最差空间复杂度 :О(n)
四、总结
已经有序,交换0次;最坏情况是,逆序,交换n-1次。
比冒泡排序快。
五、C语言实现代码
View Code
1 void select_sort(int *a, int n) 2 { 3 register int i, j, min, t; 4 for(i = 0; i < n - 1; i ++) 5 { 6 min = i; 7 //查找最小值 8 for(j = i + 1; j < n; j ++) 9 if(a[min] > a[j]) 10 min = j; 11 //交换 12 if(min != i) 13 { 14 t = a[min]; 15 a[min] = a[i]; 16 a[i] = t; 17 } 18 } 19 }