【图解数据结构】 一组动画演示选择排序

栏目: 数据库 · 发布时间: 6年前

内容简介:由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列 -----《图解数据结构》,主要使用动画来描述常见的数据结构和算法。本系列包括十大排序、堆、队列、树、并查集、图等等大概几十篇。选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。来源:

由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出一个新系列 -----《图解数据结构》,主要使用动画来描述常见的数据结构和算法。本系列包括十大 排序 、堆、队列、树、并查集、图等等大概几十篇。

选择排序

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

算法步骤

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

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

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

来源: github.com/hustcc/JS-S…

算法演示

【图解数据结构】 一组动画演示选择排序

排序动画过程解释

  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上 github.com/MisterBooo/… 获取更直观可调试运行的源码。

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


以上所述就是小编给大家介绍的《【图解数据结构】 一组动画演示选择排序》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

人类2.0

人类2.0

皮埃罗∙斯加鲁菲(Piero Scaruffi) / 闫景立、牛金霞 / 中信出版集团股份有限公司 / 2017-2-1 / CNY 68.00

《人类2.0:在硅谷探索科技未来》从在众多新技术中选择了他认为最有潜力塑造科技乃至人类未来的新技术进行详述,其中涉及大数据、物联网、人工智能、纳米科技、虚拟现实、生物技术、社交媒体、区块链、太空探索和3D打印。皮埃罗用一名硅谷工程师的严谨和一名历史文化学者的哲学视角,不仅在书中勾勒出这些新技术的未来演变方向和面貌,还对它们对社会和人性的影响进行了深入思考。 为了补充和佐证其观点,《人类2.0......一起来看看 《人类2.0》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具