39、写出折半查找的递归算法。
思路
递归的折半查找所使用的思路就是每次传递链表的high和low,然后进行折半查找,要是查找到最后依旧不满足条件则一直返回-1。
具体实现
int Binary_Search(SeqList L, int low, int high, ElemType key) {
int mid;
if(L.elem[mid] == key)
return mid;
else if(l.elem[mid] > key) {
high = mid-1;
return Binary_Search(L, low, high, key);
}
else {
low = mid+1;
if(L.elem[mid] > key)
return -1;
return Binary_Search(L, low, high, key);
}
}
40、快速排序。
思路
通过划分,将数组分为前半段和后半段,分别再次进行快速排序。
具体实现。
void QuikSort(ElemType A[], int low, int high) {
if(low < high) {
int pivotpos=Partition(A,low,high);
QuikSort(A, low, pivotpos-1);
QuikSort(A, pivotpos+1, high);
}
}
小结
本次算法主要是使用递归来进行判断的划分,if来进行条件的判断,然后分别进行不同的递归计算。