您的位置:首页 > 其它

二分查找插入排序

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: