算法图解-简单插入排序算法
Posted 达内直播课
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法图解-简单插入排序算法相关的知识,希望对你有一定的参考价值。
曾几何时一位帅气大爷(John E. Hopcroft)说出了一句话:”程序设计=数据结构+算法“,因而获得计算机最高奖项-图灵奖。
大爷的简介是酱紫的,请各位收好下巴。
12
霍普克洛夫特
美国康奈尔大学智能机器人实验室主任
计算机科学系工程与应用数学的IBM教授
世界计算机科学最高奖图灵奖获得者
美国国家科学院和工程院院士
现任香港中文大学(深圳)霍普克罗夫特高等信息科学研究院院长。
所以小编觉得你大爷终归是你大爷。
今天小编就要带大家走入算法的世界,十种常见排序算法可以分为两大类:
非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。
线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。
时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。
空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。
看完这个解释是不是很懵逼,不要急,容小编喝口水给大家用人类语言讲解
其实很好理解,时间复杂度就是排好顺序需要花费的时间,排序时间越久代表此排序算法效率越低。而空间复杂度呢就是排序所消耗的内存,消耗内存越多,算法效率也越低。
简单插入排序简介
插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
算法描述
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
从第一个元素开始,该元素可以认为已经被排序;
取出下一个元素,在已经排序的元素序列中从后向前扫描;
如果该元素(已排序)大于新元素,将该元素移到下一位置;
重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
将新元素插入到该位置后;
重复步骤2~5。
视频演示
代码演示
算法分析
插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
最后小编为大家奉上一张图片以示鼓励,如果各位小主对非线性时间理解不是很到位,大家去看看《降临》这部电影,相信小主们会有新的认识。
以上是关于算法图解-简单插入排序算法的主要内容,如果未能解决你的问题,请参考以下文章