应用二进制搜索以使用递归合并排序组合两个已排序的子数组:
void combine(int a[],int low,int mid,int high)
{
int temp[50],i,j,k;
i=low;
j=mid+1;
k=0;
int m=(low+mid)/2;
while(i<=mid&&j<=high)
{
if(a[m]<a[j])
{
for(i=low;i<=m;i++)
{
temp[k]=a[i];
k++;
}
low=mid+1;
j++;
m=(low+mid)/2;
}
else
{
high=m-1;
m=(low+mid)/2;
}
Above Function是执行二进制搜索并合并到已排序的子数组这里的子数组是:
1)a [low]到[mid]
2)a [mid 1]到[high]