折半查找

// array为待查找数组

// n为数组array的元素个数

// key为查找的元素

int BinarySearch(int *array, int n, int key)

{

	int head = 0;

	int tail = n - 1;

	int middle;

	

	while(head <= tail)

	{

		middle = (head + tail) / 2;

		printf("middle = %d\n", middle);



		if(key == array[middle])

		{

			return middle;

		}



		if(key > array[middle])

		{

			head = middle + 1;

			continue;

		}



		if(key < array[middle])

		{

			tail = middle - 1;

			continue;

		}

	}



	return -1;

}
折半查找要求数组已经为有序,如果数字无序则将其排序后再进行查找。折半查找的时间复杂度为O(logN)

你可能感兴趣的:(查找)