折半查找(二分查找)-C++版

折半查找(二分查找)
必須先排序,不然不能使用二分查找
2^20 = 100萬(就是1M) 約等於; 找20次
2^30 = 10億(就是1G) 約等於; 找30次
有趣的例子:蘭州拉麪`

#include<iostream>
using namespace std;
//int BinarySearch(int* a, const int x,const int n);  //函數聲明,數據的個數是n,要找的數據是x       豎着放
int BinSearch(int* a, const int x, const int n);				//橫着放
int main()
{
	int x[] = { 1,2,3,4,5,6,7,8,9,10 };
	int 結果;
	int num;
	num = 7;
	結果 = BinSearch(x, 7, 10);
	if (結果 < 0)
		cout << "沒找到" << endl;
	else
		cout << "在x[" << 結果 << "]找到" << endl;
	return 0;
}
int BinSearch(int* a, const int x, const int n)
{
	int left = 0, right = n - 1;
	while (left <= right)
	{
		int middle = (left + right) / 2;
		if (x < a[middle]) right = middle - 1;            //如果x小於中間的,右邊的就等於中間 -1;
		else if (x > a[middle]) left = middle + 1;       //如果x大於中間的,左邊的 就等於中間+1;
		else return middle;
	}
	return -1;
}
//int BinarySearch(int* a, const int x, const int n)     //函數定義
//{
//	int low, high, mid;
//	low = 0, high = n - 1;      //數組的下標
//	while (low <= high)
//	{
//		mid = (low + high) / 2;
//		if (a[mid] == x)
//			return mid;
//		else if (a[mid] < x)
//			low = mid + 1;
//		else if (a[mid] > x)
//			high = mid - 1;
//	}
//	return -1;
//}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章