1. 程式人生 > 其它 >二分——二分查詢(存在重複元素)

二分——二分查詢(存在重複元素)

技術標籤:機試準備

在這裡插入圖片描述

#include<stdio.h>
int lower_bound(int A[], int left, int right, int x)
{   // 找第一個大於等於 x 的位置 
	int mid;
	while(left < right)
	{
		mid = (left + right) / 2;
		if(A[mid] >= x) right = mid;
		else left = mid + 1;
	}
	return left;
}
int upper_bound(int A[], int left, int right, int
x) { // 找第一個大於 x 的位置 int mid; while(left < right) { mid = (left + right) / 2; if(A[mid] > x) right = mid; else left = mid + 1; } return left; } int main() { const int n = 5; int A[n] = {1, 3, 3, 3, 6}; printf("%d %d", lower_bound(A, 0, 4, 3), upper_bound(A, 0
, 4, 3)); return 0; }