递归算法(deep是为了测试,实际生产不需要):
核心算法:
//递归算法
int rank(Type key,Type a[],int lo,int hi,int deep)
{
if(lo > hi) return -1;
int mid = lo + (hi - lo) / 2;
printf("deep: %d lo: %d hi: %d\n",deep,lo,hi);
if (key > a[mid])
{
++deep;
return rank(key,a,mid + 1,hi,deep);
}
else if (key < a[mid])
{
++deep;
return rank(key,a,lo,mid - 1,deep);
}
else
return mid;
}
int BinarySearch(Type key,Type a[],int length)
{
int deep = 0;
return rank(key,a,0,length,deep);
}
辅助排序函数(快速排序):
void QuickSort(Type a[],int left,int right)
{
Type temp;
if(left < right)
{
int i = left;
int j = right;
temp = a[left];
do
{