数据结构实验 折半插入排序
来源:互联网 发布:德国女人 下面知乎 编辑:程序博客网 时间:2024/05/19 13:08
排序方法之----折半插入排序
选择每一个数,然后通过折半查找找到需要插入到的位置.
按照折半插入排序
分析:
折半查找以后,应该插入的位置应该是low,或者high+1 ,因为每次跳出while循环后的low都是在high的右边一位.不能用mid表示,各种情况得到的mid不一样
注意:
这个适用于以下这种形式
while (low <= high){mid = (low + high) / 2;if (x[i] > x[mid])low = mid + 1;elsehigh = mid - 1;}
#include <iostream>#include <cstring>#include <string>using namespace std;/* * 名称: 二叉排序树的查找 * 方法: 先创建一个BST,然后对其进行查找,插入,删除, * 专业: 软件工程 * by : mazicwong *//* 测试数据 3 6 9 8 7 5 4 1 2 0/*折半插入排序,即当第i个元素需要插入排序的时候,前面的i-1个数都是排序好的,这时候通过折半查找找到需要插入的地方*/const int maxn = 10;//数组中的数int main(){int x[maxn];for (int i = 0; i < maxn; i++)scanf("%d", &x[i]);for (int i = 1; i < maxn; i++) //把1~maxn-1的数都插入到最前面的序列{int low = 0;int high = i - 1;int mid;while (low <= high) //查找完以后,要插入的位置在high+1那里{mid = (low + high) / 2;if (x[i] > x[mid])low = mid + 1;elsehigh = mid - 1;}//查找完以后,应该插入的位置在low或者high+1那里,因为退出查询时候low一定在high右边一位//所以,从0~low-1不变 , 从low到i-1往后移动int key = x[i];for (int j = i-1; j >= low; j--)x[j+1] = x[j];x[low] = key;}for (int i = 0; i < maxn; i++)printf("%d ", x[i]);return 0;}
0 0
- 数据结构实验 折半插入排序
- 数据结构-折半插入排序
- [数据结构]折半插入排序
- 数据结构 折半插入排序
- 数据结构-排序: 折半插入排序
- 数据结构之 折半插入排序
- 数据结构-插入排序-折半插入排序
- 【数据结构】算法10.2 插入排序-折半插入
- 数据结构-插入排序(直接插入排序+折半插入排序)
- C++代码,数据结构-内部排序-插入排序-折半插入排序
- 排序-插入排序-折半插入排序-数据结构(27)
- 数据结构学习_折半插入排序
- 数据结构与算法简记:折半插入排序
- 数据结构排序算法——折半插入
- 数据结构与算法---直接折半插入排序
- 插入排序--折半插入
- 插入排序--折半插入
- java数据结构之插入排序(直接插入排序、折半插入排序、希尔排序)
- Eclipse && Android Studio 连接手机的问题及解决方案
- 1
- 访问单个节点的删除
- 【读书】中国历史朝代顺序详表
- py编辑器中添加html页面不能显示中文的问题
- 数据结构实验 折半插入排序
- PHP支付宝服务窗API接口的开发
- python,scala,java中的map,reduce和filter
- Filter 过滤器
- 省市县三级联动
- Homebrew简介与安装
- 关于一些学习和工作上的小小总结
- 跳台阶 && 变态跳台阶
- 机器学习:DeepDreaming with TensorFlow (三)