折半查找

// 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)
posted @ 2013-12-03 14:10  a ray of sunshine  阅读(178)  评论(0编辑  收藏  举报