用二分法在有序数列中查找元素位置

#include
int main()
{
	int n,x,i,j,p;
	scanf("%d", &n);
    int num[n];
	for (i = 0; i < n; i++)
		scanf("%d", &num[i]);
	scanf("%d", &x);
	for (i = 0, j = n - 1;;)
	{
		if (num[i] == x)
		{
			p = i;
			break;
		}
		if (num[j] == x)
		{
			p = j;
			break;
		}
		if (x >= num[(i + j) / 2])
			i = (i + j) / 2, j = n - 1;
		else
			i = 0, j = (i + j) / 2;
	}
	printf("%d", p+1);

}
/*输入:
10
1 2 3 4 5 6 7 8 9 10
5
输出:5*/

你可能感兴趣的:(算法,数据结构)