妙趣橫生的算法實例2-2-->折半查找

源代碼如下:

#include <stdio.h>

int binSearch(int key[], int n, int k)
{
	int low = 0, high = n - 1, mid;
	while(low <= high)
	{
		mid = (low + high) / 2;
		if(key[mid] == k)
		{
			return mid;
		}else if(key[mid] < k)
		{
			low = mid + 1;
		}else
		{
			high = mid - 1;
		}
	}

	return -1;
}

int main()
{
	int a[10] = {2, 3, 5, 7, 8, 10, 12, 15, 19, 21};
	int find;
	int result;
	int i;

	for(i = 0; i < 10; i++)
	{
		printf("%d ", a[i]);
	}

	printf("\n");
	printf("請輸入要查找的數:\n");
	scanf("%d", &find);
	result = binSearch(a, 10, find);
	if(result != -1)
	{
		printf("%d在數組中的位置爲%d\n", find, result);
	}else{
		printf("%d在數組中不存在\n", find);
	}
	
}


運行結果如下:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章