选择排序

选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

算法步骤

  1. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

  2. 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

  3. 重复第二步,直到所有元素均排序完毕。

来源:https://github.com/hustcc/JS-Sorting-Algorithm

算法演示

排序动画过程解释

  1. 线性搜索数列并找到最小值,此时找到了为 2

  2. 将最小值替换为数列中左端的数字,即将 2 与 4 进行交换

  3. 此时 2 已经排序好

  4. 继续线性搜索剩余数列找到最小值,此时找到了 3

  5. 将最小值替换为数列中左端的数字,即将 3 与 4 进行交换

  6. 此时 2 与 3 已经排序好

  7. 继续线性搜索剩余数列找到最小值,此时找到了 4

  8. 如果最小值已经在左端,那么不执行任何操作,所以此时不做任何处理

  9. 此时 2 、 3  、 4 已经排序好

  10. 重复相同操作,直到所有数字都被排序

代码实现

为了更好的让读者用自己熟悉的编程语言来理解动画,笔者将贴出多种编程语言的参考代码,代码全部来源于网上。

C++代码实现

Java代码实现

Python代码实现

JavaScript代码实现

如果你是iOS开发者,可以在GitHub上 https://github.com/MisterBooo/Play-With-Sort-OC 获取更直观可调试运行的源码。

如果你想获取高清的动画演示,在 五分钟学算法 公众号里回复 选择排序 即可。



©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 深度好文 |Matplotlib 可视化最有价值的 50 个图表(附完整 Python
  2. 阅读优秀 Python 开源项目的代码,提升编程技能(GitHub 资源帖推荐)
  3. 两行代码搞定:Jupyter Notebook中自动补全代码
  4. 世界杯:用Python分析热门夺冠球队-(附源代码)
  5. 官方示例(十三):3步70行代码开发GIS点坐标技术 ThingJS
  6. 使用机器学习生成可维护的前端代码(附源码)
  7. 有了这个VSCode神器,从此爱上调试代码
  8. 给Python代码加上酷炫进度条的几种姿势
  9. 童年的游戏,Python一行代码就能玩

随机推荐

  1. python安装第三方的包 工具对比
  2. [LeetCode] 486. Predict the Winner 预
  3. 2018年马哥人工智能&Python自动化全栈
  4. Linux--多线程之线程的取消pthread_cance
  5. 教女友学习机器学习0X02——逻辑回归
  6. linux中openssl和ssh的配置和简单应用
  7. linux python调试技巧
  8. LAMP兄弟连PHP全民总动员
  9. 如何解决Python.h:No such file or direct
  10. Python如何规避全局解释器锁(GIL)带来的