[蓝蓝计算机考研算法训练二期]-day26

107 阅读1分钟

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来进行条件的判断,然后分别进行不同的递归计算。