亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++實現二分查找

發布時間:2020-06-17 15:06:05 來源:網絡 閱讀:387 作者:zgw285763054 欄目:編程語言

維基百科:二分搜索英語:binary search),也稱折半搜索英語:half-interval search)、對數搜索英語:logarithmic search),是一種在有序數組中查找某一特定元素的搜索算法。搜索過程從數組的中間元素開始,如果中間元素正好是要查找的元素,則搜索過程結束;如果某一特定元素大于或者小于中間元素,則在數組大于或小于中間元素的那一半中查找,而且跟開始一樣從中間元素開始比較。如果在某一步驟數組為空,則代表找不到。這種搜索算法每一次比較都使搜索范圍縮小一半。


時間復雜度為C++實現二分查找。(n代表集合中元素的個數)

空間復雜度C++實現二分查找。雖以遞歸形式定義,但是尾遞歸,可改寫為循環。


#include <iostream>
using namespace std;
#include <assert.h>

//方法1:區間為[ ]
/*
int BinarySearch(int* a, int size, int x)
{
	assert(a);
	int left = 0;
	int right = size - 1;
	while (left <= right)
	{
		int mid = left+(right - left) / 2;

		if (a[mid] < x)
		{
			left = mid + 1;
		}
		else if (a[mid] > x)
		{
			right = mid - 1;
		}
		else
		{
			return mid;
		}
	}

	return -1;
}*/

//方法2:區間為[ )
int BinarySearch(int* a, int size, int x)
{
	assert(a);
	int left = 0;
	int right = size;
	while (left < right)
	{
		int mid = left + (right - left) / 2;

		if (a[mid] < x)
		{
			left = mid + 1;
		}
		else if (a[mid] > x)
		{
			right = mid;
		}
		else
		{
			return mid;
		}
	}

	return -1;
}

void Test()
{
	int array[] = {0, 1, 2, 3, 4, 5, 6, 7};
	cout<<BinarySearch(array, sizeof(array)/sizeof(array[0]), 0)<<endl;
}

int main()
{
	Test();
	return 0;
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

白山市| 西充县| 芒康县| 朝阳县| 肥东县| 九台市| 延安市| 博乐市| 铜梁县| 滦平县| 白玉县| 浮梁县| 九龙坡区| 万载县| 绥江县| 兴化市| 溆浦县| 峨边| 颍上县| 长沙县| 宜州市| 富宁县| 改则县| 新竹市| 新闻| 阿瓦提县| 千阳县| 桂平市| 临武县| 许昌县| 望奎县| 肃南| 洪洞县| 巴楚县| 巴塘县| 福建省| 建宁县| 榆社县| 麻江县| 视频| 石首市|