二分

循环

int search1(int a[], int len,int key) {
	int l = 0, r = len - 1;
	while (l <= r) {
		int mid = l + (r - l) / 2;
		if (a[mid] == key)return mid;
		else if(a[mid] > key)r = mid - 1;
		else  l = mid + 1;
	}
	return -1;
}

递归

int search2(int a[], int l, int r, int key) {
	if (l > r)return -1;
	int mid = l + (r - l) / 2;
	if (a[mid] == key)return mid;
	else if (a[mid] < key)return search2(a, mid + 1, r,key);
	else return search2(a, l, mid - 1,key);
}
posted @ 2024-07-20 14:37  某朝  阅读(15)  评论(0)    收藏  举报