【排序算法】:选择排序
2017-08-11 11:02
274 查看
介绍
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。平均时间复杂度:O(n2)
空间复杂度:O(1) (用于交换和记录索引)
稳定性:不稳定
排序实例:
初始关键字 [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 SelectSort(int* arr, int len) { assert(arr > 0); assert(len > 0); for (int i = 0; i < len - 1; i++) { for (int j = i + 1; j < len; j++) { if (arr[j] < arr[i]) swap(arr[i], arr[j]); } } }
相关文章推荐
- C语言中的排序算法--冒泡排序,选择排序,希尔排序
- 8种排序算法--直接选择排序
- 排序算法总结---树形选择排序,堆排序
- 排序算法--选择排序
- 排序算法(二)简单选择排序
- (一)几种排序算法的学习总结(选择排序与插入排序)
- 排序算法——选择排序
- 排序算法:选择排序
- 数据结构与算法之排序算法---简单选择排序
- java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试
- 总结几种排序算法(二)---选择排序
- 排序算法复习(Java实现)(一): 插入,冒泡,选择,Shell,快速排序
- 排序算法 之 直接选择排序
- js--排序算法--选择排序
- 排序算法(二)-- 选择排序
- 排序算法---选择排序
- 排序算法-选择排序
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
- 常用的排序算法性能分析(1)—— 选择排序、插入排序、希尔排序
- 排序算法之--直接选择排序