91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

安多县| 桐乡市| 来宾市| 清水县| 镇坪县| 商丘市| 平罗县| 南溪县| 三河市| 德江县| 汽车| 新乡县| 时尚| 乌拉特后旗| 东乡县| 伊宁县| 乌兰浩特市| 眉山市| 铜川市| 隆尧县| 乌拉特前旗| 云安县| 石嘴山市| 天峨县| 潮州市| 黎平县| 隆回县| 南康市| 兰西县| 察雅县| 兰溪市| 葵青区| 繁昌县| 广安市| 湘西| 东安县| 伊宁市| 高密市| 商都县| 楚雄市| 吴堡县|