看完这个你还不会 插入排序 么

作者: 五分钟学算法 | 来源:发表于2018-11-24 09:12 被阅读12次

前言

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

插入排序

插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法步骤

  1. 将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

  2. 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)。

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

算法演示

image

排序动画过程解释

  1. 一开始左端数字已经排序,数字 5 不动

  2. 然后,取出剩余未操作的左端数字 3

  3. 将其与已经操作的左侧数字相比较

  4. 如果左边的数字较大,则交换两个数字

  5. 这种情况下,由于 5 大于 3 ,所以交换两个数字

  6. 重复此操作,直到出现一个较小的数字或者数字到达左端

  7. 数字 3 已经完成排序

  8. 接下来,和之前一样取出剩余未操作的左端数字 4

  9. 与其相邻的左边数字进行比较

  10. 这种情况下,由于 5 大于 4 ,所以交换两个数字

  11. 继续操作,由于 3 小于 4 ,即出现了更小的数字,所以 4 停止移动

  12. 数字 4 已经完成排序

  13. 重复相同的操作,直到所有的数字完成排序

代码实现

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

C++代码实现

image

Java代码实现

image

Python代码实现

image

JavaScript代码实现

image

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

你可以关注公众号 五分钟学算法 获取更多排序内容。

相关文章

  • 看完这个你还不会 插入排序 么

    前言 由于LeetCode上的算法题很多涉及到一些基础的数据结构,为了更好的理解后续更新的一些复杂题目的动画,推出...

  • 看完这个,你还拼爹么

    相亲大会现场 男 我取你,你嫁到我家来 女 你有房么 男 我爸有 女 你有车么 男 我爸有 女 你有存款么 男 我...

  • 看完这个,你还打孩子吗?

    关键词:暴力、打孩子、亲人、朋友 1 晚餐时,隔着两扇门都强烈地感受到了对面哥们的熊熊怒火,把他家小子打得哇哇大哭...

  • 看完这个,你还打孩子吗?

    文/可可老师 图/来源于网络 -1- 看到这个题目的时候,很多家长会不自觉的对号入座,这说的不就是我嘛:孩子不听话...

  • 看完这个,你还想要追iPhone么

    今天凌晨苹果发布新一代iPhone和Apple Watch等产品,其中最令人期待的当然是iPhone 8和iPho...

  • 高效能的7个习惯读后感

    你相信么,我昨天看完了,今天早上就早起了,还跑了步~~ 第一,以原则为中心的思维方式 这个给我了很大的触动,我问自...

  • 看完《绣春刀》你还喜欢张震么

    前一阵绣春刀2比较热,我就把1看了一下。我相信很多人(妹子)都是冲着张震才看的这个系列电影吧。其实张震的电影我并没...

  • 我。。。你?还好么。

    你还好么。。 还会和你的百事么。。 还爱你的张先森么。。 还会偶尔想起我这个渣男么?

  • 路口,伤成等待

    路口,等待伤成。你知道么?如果不是你,这个路口不会像伤疤,横在我的心里然而,如果没有你,这个梦亦不会这般绮丽 ...

  • 安全感

    什么是安全感? 不管你做什么,都知道对方不会离开… 这就是么? 这是最基本的… 哦。 如果连这个都不确定,你觉得还...

网友评论

    本文标题:看完这个你还不会 插入排序 么

    本文链接:https://www.haomeiwen.com/subject/poseqqtx.html