理解折半插入排序

Posted 算法与编程之美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解折半插入排序相关的知识,希望对你有一定的参考价值。

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

引言

插入排序中有直接插入排序,善于思考的能够发现该算法在进插入的时候是采用了顺序查找的方法,而在要查找的表中数据本身有序的前提下可以使用折半查找来代替顺序查找,这种排序的算法就是折半插入排序算法。

算法描述

本篇文章描述的是折半插入排序算法,折半插入排序算法的原理就是利用折半查找的方法来查找插入的位置,然后直接将需要的数据插入该位置就可以了。

第一步:先将需要排序的序列中的第一个数据看成是一个有序序列。

第二步:从第二个元素开始,逐个进行插入。

第三步:在插入的时候先使用折半查找在有序序列中找到该数据应该插入的位置,比较该数据与有序序列中的中间值大小。

给定一个序列为a[0], a[1], a[2]……a[i-1], a[i], a[i+1]……a[n-1]。假设前面i个元素已经是有序序列,现在将第i个元素插入其中,首先需要做的是找到插入元素的位置,然后再插入。

此时定义两个指针为low和high,low指向a[0],high指向a[i-1],使用折半查找,前面有序序列的中间值为a[mid],mid=(low+high)/2,则前面序列为a[0], a[1], a[2]…a[mid]…a[i-1]。将a[i]与a[mid]进行比较,若a[i]>a[mid] ,说明a[i]的位置就应该在mid和high之间,再在mid和high之间用相同方法进行查找。若a[i]< a[mid], 说明a[i]的位置就应该在mid和low之间,再在mid和low之间用相同方法进行查找。找

以上是关于理解折半插入排序的主要内容,如果未能解决你的问题,请参考以下文章

插入排序(直接插入排序折半插入排序希尔排序的算法思想及代码实现)

内部排序——插入排序之折半插入排序

排序算法:折半插入排序

从二分查找到折半插入排序

直接插入排序 ,折半插入排序 ,简单选择排序, 希尔排序 ,冒泡排序 ,快速排序 ,堆排序 ,归并排序的图示以及代码,十分清楚

排序算法2--插入排序--折半插入排序