折半查找与其判别树(对于固定个数的n个序列其判定树的形式是固定的)
int BSearch(int arr[ ] ,int low, int high, int key)
{
while (low <= high)
{ int mid =(low + high) /2;
if (arr [mid] == key)
return mid;
else if (arr[mid] > key)
high=mid-1;
else
loW=mid+1;
}
return -1 ;
}
11个元素的:
void BInsertSort(int a[],int size){
int i,j,low = 0,high = 0,mid;
int temp = 0;
for (i=1; i<size; i++) {
low=0;
high=i-1;
temp=a[i];
//采用折半查找法判断插入位置,最终变量 low 表示插入位置
while (low<=high) {
mid=(low+high)/2;
if (a[mid]>temp) {
high=mid-1;
}else{
low=mid+1;
}
}
//有序表中插入位置后的元素统一后移
for (j=i; j>low; j--) {
a[j]=a[j-1];
}
a[low]=temp;//插入元素
}
}