一:直接插入排序是什么。
二:如何实现直接插入排序
三:直接插入排序时间复杂度
一:直接插入排序它是排序得一种,其目的无非是将乱序通过排序排成有序的。
我们可以通过动画直观看什么是直接插入排序
这是我找的直接插入排序的动画,大家务必观看,有助于理解直接插入排序
【插入排序动画演示】
https://www.bilibili.com/video/BV1er4y1b7o4?vd_source=82192e4b91182780b22eaffdea08406c
二:实现直接插入排序
这里我是利用画图,来模拟实现直接插入排序
我在这描述一下直接插入排序如何实现:比如一共有6个无序的数,给他进行直接插入排序。
它是先让end从左到右遍历(用下标i控制),tmp存储end+1(end后面一个的值)。如果end对应的值大于tmp,就把end的值挪到tmp位置。然后让end--(end位置往前挪一位),然后让tmp挪到end+1的位置(end挪动之前的位置)。然后i++,让end遍历,走到第二个位置,让end的下一个位置上的数给给tmp,在和end的值比较,tmp小于end,end的值往后挪,然后让tmp再和第一个位置的数比,tmp小于它,第一个再往后挪,否则第一个数不动,接着让tmp挪到第一个或者第二个位置上。end遍历到第三个数,end和它后面一个数比较,大于end往后挪,end的前面的数依次和tmp比,大了往后挪,否则数字位置不动。再就是一直重复以上过程直至end取到第五个数结束(因为end取第六个数,后面没有数字给它排序的了)。
提炼:直接插入排序是让当前的数x跟它的下一个数tmp比较,x大,x往后挪一位呗。然后是再让
tmp依次和x之前的数比,tmp小,x之前的数往后挪,否则该数的位置不动。
下头是代码
测试一下