教学篇教你轻松看懂插入排序
Posted 首经起点计协
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教学篇教你轻松看懂插入排序相关的知识,希望对你有一定的参考价值。
相信大家在c语言课上已经学习了快速排序法和选择排序法,并且要求熟练掌握,在这里再为大家介绍一种很常见并且以后要学到的排序方法——插入排序。
直接插入排序,有时也简称为插入排序,是减治法的一种典型应用。
基本思想
对于一个数组A[0,n]的排序问题,假设认为数组在A[0,n-1]排序的问题已经解决了。考虑A[n]的值,从右向左扫描有序数组A[0,n-1],直到第一个小于等于A[n]的元素,将A[n]插在这个元素的后面。
直接插入排序对于最坏情况(严格递减的数组),需要比较和移位的次数为n(n-1)/2;对于最好情况(严格递增的数组),需要比较的次数是n-1,需要移位的次数是0。当然,对于最好和最坏的研究其实没有太大的意义,因为实际情况下,一般不会出现如此极端的情况。
然而,直接插入排序对于基本有序的数组,会体现出良好的性能,这一特性,也给了它进一步优化的可能性(希尔排序)。
下面用一个具体的场景,直观地体会一下插入排序的过程:
场景
现有一个无序数组,共7个数:
89 45 54 29 90 34 68。
使用直接插入排序法,
对这个数组进行升序排序
89 45 54 29 90 34 68
45 89 54 29 90 34 68
45 54 89 29 90 34 68
29 45 54 89 90 34 68
29 45 54 89 90 34 68
29 34 45 54 68 89 90
算法实现
大家自己上机试一下噢!
欢迎在留言区与我们讨论
关注起点计算机协会
了解更多内容
- End -
编辑:陈嘉澍
排版:孔思凡
以上是关于教学篇教你轻松看懂插入排序的主要内容,如果未能解决你的问题,请参考以下文章