数据结构(C语言)折半插入排序

折半插入排序的总体思想是:

a[i]和前面a[0]到a[i-1]的有序数中间位置的数比较大小

如果a[i]大于中间位置的值,就把有序数的左端点往右移到中间位置的下一位

如果小于中间位置的值,就将有序数的右端点往左移到中间位置的前一位,一直重复进行比较

直到左端点的位置大于右端点的位置,此时确定要插入的位置就是右端点的下一位

将a[i-1]到a[i]要插入的位置的数集体向后移动一位

将a[i]插入找到的位置

至于为什么插入位置是右端点的下一位,以下举例解释:

38,69,45,97,76,13,27

a[2]进行插入排序,左端点位置是0,右端点位置是1,中间位置是(0+1/2=0),l,m都在0的位置,h在1的位置,45>38,左端点往右移l,m,h都在1的位置,45<69,右端点往左移,h在0的位置,l在1的位置,此时l>h比较结束,45应插入38的后面,即h的下一位。

代码如下:

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容