排序三:选择排序
来源:互联网 发布:淘宝鬼脚七 编辑:程序博客网 时间:2024/05/16 01:32
概念
选择排序每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。
选择排序的优化:用两个指针,指向数据头和尾,两头同时遍历,找到最大和最小分别放到头和尾。
代码
//选择排序(普通版)void SelectSort(int*a, size_t n){ assert(a); for (size_t j = 0; j < n; ++j) { for (size_t i = 0; i < n; i++) { if (a[i] < a[i + 1])//每趟选出最小值放在末尾 { int tmp = a[i]; a[i] = a[i + 1]; a[i + 1] = tmp; } } }}//选择排序(优化版)void SelectSort2(int* a, size_t n){ assert(a); size_t left = 0; size_t right = n; while (left < right) { size_t min = left; size_t max = right; while( min < n) { if (a[min] < a[min + 1]) swap(a[min], a[min + 1]); ++min; } while(max > 0)//错误:不可是>=,因为是size_t类型 { if (a[max]>a[max - 1]) swap(a[max], a[max - 1]); --max; } left++; right--; }}
时间复杂度
O(N^2)
空间复杂度
O(1)
稳定性
不稳定,会改变相同数据的位置
复杂性
简单
阅读全文
0 0
- 排序(三)-选择排序
- 排序三:选择排序
- 排序三之选择排序
- 三 选择排序(简单选择排序和堆排序)
- 三大排序:选择排序,冒泡排序,插入排序
- 选择排序(三)--堆排序
- 排序法系列之三---选择排序
- 排序算法之三选择排序
- 排序算法(三):选择排序
- java排序算法之三选择排序
- 排序算法(三)选择排序
- 常见排序算法 (三)-选择排序
- 排序算法(三)选择排序
- 排序算法之三----选择排序
- 排序(三):直接选择排序
- 内部排序之三:选择排序
- 内部排序(三)选择排序
- 排序算法(三)选择排序
- Hadoop中HDFS相关
- http前端缓存(一)
- Spring MVC-统一异常处理
- JavaScript高级程序设计第11章-DOM扩展
- Android Studio 指定签名证书文件
- 排序三:选择排序
- 第三季第一节课——题目3
- java-----抽象类与接口
- CSS深入之单个标签就能6翻天的特效(三)
- 并查集模版及其示例
- QT creator5.6.2 创建GUI窗口
- nginx反向代理简单配置
- HDU 1114 Piggy-Bank (完全背包)
- Unity3D学习记录——飞盘射击游戏1