中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

谢通门县| 砚山县| 交口县| 赤水市| 济南市| 伊春市| 大荔县| 邵武市| 芒康县| 外汇| 镇平县| 清苑县| 大理市| 平定县| 南漳县| 荣昌县| 平罗县| 鄂伦春自治旗| 阳江市| 大竹县| 河池市| 潼关县| 西安市| 湛江市| 布拖县| 东兰县| 来安县| 延寿县| 内丘县| 巴东县| 铜山县| 伊吾县| 长沙市| 元朗区| 新蔡县| 建平县| 綦江县| 丹东市| 慈利县| 玉龙| 大连市|