#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;
}
二分查找插入排序
最新推荐文章于 2021-01-19 21:49:16 发布