首先回顾下排序算法的种类:
- 冒泡排序
- 选择排序
- 插入排序
- 希尔排序
- 桶排序
- 归并排序
- 快速排序
- 计数排序
这一篇文章就准备聊聊 选择排序,废话不多说,开搞!
选择排序的简述
选择排序是性能相对较差的算法,因为它的平均时间复杂度为 **O(n^2)**,同时它也 不是一个稳定的 算法,但是它也不是一无是处,至少它的空间复杂度为 O(1)
通常不建议在实际开发中使用,但与冒泡排序一样,可以作为算法入门进行学习
算法的稳定性指的是如果在某一无序集合中a=b,且a在b前面,经过排序后,如果a依旧在b前面,那么可以认为使用的排序算法是稳定的,反之,就是不稳定的
选择排序的实现过程
选择排序是一种简单直观的排序算法,它的工作原理:以升序为例,首先在未排序序列中找到 最小元素,存放到排序序列的 起始位置,然后,再从剩余 未排序 元素中继续寻找 最小元素,然后放到已排序序列的 末尾,以此类推,直到所有元素均排序完毕
下面给出代码示例
1 | function chooseSort(arr){ |
从代码示例中我们可以总结如下关键点
- 确定外循环轮数,轮数为 集合总长度-1
- 确定内循环轮数,轮数为 集合总长度 - 已排序集合长度 - 1
- 在每一轮内循环内,假定未排序序列的 第一个元素 为最小值,然后遍历未排序序列,找到 真正的 最小值
- 重复上述步骤,直至整个集合有序
结语
选择排序其实理解起来很容易,实现上也很简单,因此对于算法的入门十分适合。算法的学习过程虽然枯燥,但是真正掌握后就可以实实在在提升我们的内功,所以,一起加油吧,骚年!