【排序】选择排序算法
2016-08-04 19:14
225 查看
特别说明
对于算法,重在理解其思想、解决问题的方法,思路。因此,以下内容全都假定待排序序列的存储结构为:顺序存储结构。
选择排序思想
选择排序又称为简单选择排序,主要思想描述如下:
01.假设待排序列表为
简单选择排序算法编码参考
算法分析
简单选择排序算法时间复杂度与插入排序算法、冒泡排序算法一样,都是
。辅助空间也一样,也是
。但相比插入排序与冒泡排序,选择排序的数据移动操作倒没那么频繁(因为在确定未排序部分的最小(或最大)元素时,我们不需要执行移动操作,只需要用下游标标记即可)。
对于算法,重在理解其思想、解决问题的方法,思路。因此,以下内容全都假定待排序序列的存储结构为:顺序存储结构。
选择排序思想
选择排序又称为简单选择排序,主要思想描述如下:
01.假设待排序列表为
// // summary : 选择排序 // in param : seqlist 待排序列表.同时也是排完序列表. // in param : nLen 列表长度 // out param : -- // return : -- // !!!note : 01.以下实现均假设一切输入数据都合法.即:内部不对参数全法性进行校验,默认它们全都合法有效. // 02.排序开始前 seqlist 是无序的,排序结束后 seqlist 是有序的. void select_sort(int seqlist[/*nLen*/], const int nLen) { if (nLen <= 1) { return;// only one element. } auto nInnerIdx = 0; auto nMinIdx = 0; auto nTemp = 0; for (auto nOuterIdx = 0, nInnerIdx = 0; nOuterIdx < nLen - 1; ++nOuterIdx) { nInnerIdx = nOuterIdx; nMinIdx = nInnerIdx; while (++nInnerIdx < nLen) { if (seqlist[nInnerIdx] < seqlist[nMinIdx]) { nMinIdx = nInnerIdx; } } if (nMinIdx != nOuterIdx) { nTemp = seqlist[nOuterIdx]; seqlist[nOuterIdx] = seqlist[nMinIdx]; seqlist[nMinIdx] = nTemp; } } }
简单选择排序算法编码参考
算法分析
简单选择排序算法时间复杂度与插入排序算法、冒泡排序算法一样,都是
。辅助空间也一样,也是
。但相比插入排序与冒泡排序,选择排序的数据移动操作倒没那么频繁(因为在确定未排序部分的最小(或最大)元素时,我们不需要执行移动操作,只需要用下游标标记即可)。
相关文章推荐
- 基础排序算法(冒泡排序、选择排序、插入排序)
- 排序算法3之选择排序
- 用JavaScript实现十大经典排序算法--选择排序
- 排序算法2--简单选择排序、堆排序
- 排序算法六:选择排序之直接选择排序
- Java程序员必须掌握的排序算法Java实现整合二 :选择排序
- 排序算法-------简单选择排序
- 【Java】八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序 、快速排序、归并排序、堆排序和LST基数排序
- 排序算法--选择排序
- Java实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等
- 排序算法(二):选择排序(直接选择排序、堆排序)
- 排序算法(四)选择排序及优化版本
- 几种排序算法 冒泡、快速排序、归并、选择排序等
- 排序算法之冒泡排序、选择排序
- 排序算法(二):JAVA实现选择排序
- 排序算法汇总(选择排序 ,直接插入排序,冒泡排序,希尔排序,快速排序...)
- 【排序算法】选择排序原理及Java实现
- 8种排序算法--直接选择排序
- PHP排序算法:选择排序
- 排序算法大集锦_选择类——直接选择排序