直接上代碼:
//二分插入排序
void binary_insert_sort(int arr[],int len)
{
if(arr == NULL || len <= 1)
{
return;
}
int i,j;
for(i = 1; i < len; i++)
{
int low = 0,high = i-1;
int target = arr[i];
while(low <= high)
{
int middle = low + ((high - low)>>1);
if(arr[middle] > target)
{
high = middle-1;
}else
{
low = middle+1;
}
}
//low的位置正好是插入點
//i與low之間的元素后移一位(不包括i)
for(j = i; j>low; j--)
{
arr[j] = arr[j-1];
}
//將target插入到正確位置
arr[low] = target;
}
}
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。