排序-插入类排序-折半插入排序
2016-01-18 22:40
183 查看
上一篇说了插入类排序思想,并且说了直接插入排序,这篇说说折半插入排序,其实看字面意思就能想到了,折半大家都能想到折半查找了,其实就是这个意思,在上一篇直接插入排序我们是基于顺序查找的方式进行插入排序,而这次,其实就是用折半查找方式查找出待插入的位置,然后进行后移,最后进行插入
#include<stdio.h> int main(void) { //设置数组长度为9,,0下标元素用来,备份待插入的值 int num[9] = { 0,33,12,25,46,33,68,19,80 }; int i, j, mid, right, left; //折半查找时候,right代表有序序列折半左半边际,right有序序列右边边际 for ( i = 2; i < 9; i++) { if (num[i] < num[i-1]) { num[0] = num[i]; left = 1; right = i - 1; while (left <= right) //当条件停止的时候,就是找到位置的时候 { mid = (right + left) / 2; if (num[0] < num[mid]) //如果比中间值还小,那就继续往前插 { right = mid - 1; } else { left = mid + 1; } } for (j = i - 1; j >= left; j--) //这里由于上面条件left <= right的限制,所以这里是大于等于left //当然也可以写成 大于right 开始向后移动 { num[j + 1] = num[j]; } //插入到合适位置 num[left] = num[0]; } } for (i = 1; i < 9; i++) { printf("%d ", num[i]); } getchar(); return 0; }
相关文章推荐
- 插入排序
- php实现插入排序
- javascript 折半查找字符在数组中的位置(有序列表)
- Java数据结构及算法实例:插入排序 Insertion Sort
- javascript数据结构之双链表插入排序实例详解
- C++ 先对数组排序,在进行折半查找
- c++几种基本的插入排序(图文)
- Java排序算法总结之插入排序
- JAVA算法起步之插入排序实例
- java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
- python插入排序算法的实现代码
- 插入排序
- 排序算法 java版本
- 插入排序
- 排序
- 排序
- 算法实践- 插入排序
- 排序算法-插入排序
- C#版二分查找(代碼)
- 直接插入排序(Straight Insertion Sort)代码及分析注释