二分插入排序和二分查找
2015-10-26 17:29
393 查看
1.二分插入排序
二分插入排序其实是直接插入排序的改进,在前面已排好的队列中,以二分查找的形式插入待排序数据
2.二分查找
在有序序列中查找值是否存在,是将序列不断分成两部分进行查找
下面直接贴代码:
二分插入排序其实是直接插入排序的改进,在前面已排好的队列中,以二分查找的形式插入待排序数据
2.二分查找
在有序序列中查找值是否存在,是将序列不断分成两部分进行查找
下面直接贴代码:
#include <iostream> //二分插入排序 void BInsertSort(int *a,int c) { for(int i=1;i<c;i++) { int key=a[i]; int left=0,right=i-1; while(left<=right) { int middle=(left+right)/2; if(key>a[middle]) left=middle+1; else right=middle-1; } //此时left所在位置为要插入的位置 for(int j=i;j>left;j--) a[j]=a[j-1]; a[left]=key; } } //二分查找 int BSearch(int *a,int tar,int length) { int left=0,right=length-1,middle; while(left<=right) { middle=(left+right)/2; if(tar>a[middle]) left=middle+1; else if(tar<a[middle]) right=middle-1; else return middle; } return -1; } int main() { int a[10]={9,4,10,5,8,7,3,6,1,2}; int c=10; BInsertSort(a,c); for(int i=0;i<c;i++) { printf("%d\n",a[i]); } int b=BSearch(a,9,c); printf("%d\n",b); return 0; }
相关文章推荐
- Android ScrollView+ViewPager+ListView一起使用
- C++学习笔记6 - 分支语句和逻辑运算符
- 列正交化-施密特正交化方法
- 常用的API接口,返回JSON格式的服务API接口
- ORACLE NTERVAL 时间表达式
- Ubuntu下配置HHVM最新教程
- 第三周-项目4
- C#学习笔记1
- Linux下安装Erlang编程环境
- Sqoop导mysql库到Hive中com.mysql.jdbc.RowDataDynamic错误解决
- ehCache+spring的简单实用
- C++:对象数组
- 获取淘宝参数签名
- 前端新手需要注意的几个问题
- Codeforces Round #327 (Div. 2)C. Median Smoothing 构造
- 测试笔试题
- 学习如何读文献,
- 第六周 项目2 建立链栈算法库
- android PopupWindow 简单应用
- StringBuffer和String区别