二分查找插入排序
2015-06-26 16:54
246 查看
[cpp] view
plaincopy
#include <stdio.h>
#include <stdlib.h>
void pr_arr(int a[],int len)
{
int i=0;
for(i=0;i<len;++i)
{
printf("%d ",a[i]);
}
printf("\n");
}
//查找插入的位置
int bFindToInsert(int *arr,int len,int key)
{
int low=0,high=len-1,mid;
while(low <= high)
{
mid=(high+low) >> 1;
if(key >= arr[mid])
{
low=mid+1;
}
else high=mid-1;
}
return low;
}
//binary insert sort
void bInsertSort(int *s,int len)
{
int i,k,t,bi;
for(i=1;i<len;++i)
{
t=s[i];
bi=bFindToInsert(s,i,s[i]);
for(k=i-1;k>=bi;--k)
{
s[k+1]=s[k];
}
s[bi]=t;
}
}
int main(void) {
int a[] ={ 2, 1, 3, 324, 2, 34, 44, 5, 7, 8 };
int len = sizeof(a) / sizeof(int);
bInsertSort(a, len);
pr_arr(a, len);
return 0;
}
plaincopy
#include <stdio.h>
#include <stdlib.h>
void pr_arr(int a[],int len)
{
int i=0;
for(i=0;i<len;++i)
{
printf("%d ",a[i]);
}
printf("\n");
}
//查找插入的位置
int bFindToInsert(int *arr,int len,int key)
{
int low=0,high=len-1,mid;
while(low <= high)
{
mid=(high+low) >> 1;
if(key >= arr[mid])
{
low=mid+1;
}
else high=mid-1;
}
return low;
}
//binary insert sort
void bInsertSort(int *s,int len)
{
int i,k,t,bi;
for(i=1;i<len;++i)
{
t=s[i];
bi=bFindToInsert(s,i,s[i]);
for(k=i-1;k>=bi;--k)
{
s[k+1]=s[k];
}
s[bi]=t;
}
}
int main(void) {
int a[] ={ 2, 1, 3, 324, 2, 34, 44, 5, 7, 8 };
int len = sizeof(a) / sizeof(int);
bInsertSort(a, len);
pr_arr(a, len);
return 0;
}
相关文章推荐
- 开始博客记录
- HDU 3376 Matrix Again(最大费用最大流)HDU2686加强题
- 蘑菇街面试总结
- 游戏设计的艺术:一本透镜的书——第十六章 故事和游戏结构能用间接控制巧妙地联合起来
- 如何用U盘制作Ubuntu 15.04启动盘
- 汇编语言学习笔记(8)——数据处理的基本问题
- 二维码
- 前端设计师,网址精选
- Combox控件初始化项的技巧
- [SoapUI] Reference parameter 引用变量
- 利用缓存、Timer间隔时间发送微信的实例,很有用的例子
- hbase vs mongodb
- 黑马程序员-------String类
- Linux内核编译过程
- adaboost
- cmake-gui出错解决方法
- 关于linux中文乱码的问题。
- Java socket 客户端接受数据
- 解决Android中Handler警告、SimpleDateFormat警告、"String".toUpperCase()警告
- 解决Android中Handler警告、SimpleDateFormat警告、"String".toUpperCase()警告