【C++】Binary Search

Binary Search 是一个搜寻演算法~ 它的时间复杂度只有O log(n)~

但使用它之前要先确认资料是已排序过的~

在使用回圈将 target 与中间值比较,如 target 大於中间值,就往右搜寻~ 否则就往左搜寻~


学习目标: Binary Search的概念及实务

学习难度: ☆☆☆


#include <iostream>

#include <algorithm> //内建sort的library

using namespace std;

int BinarySearch(int array[],int length,int target)
{
	int start,end,mid;
	
	start=0;
	
	end=length-1;
	
	while(start<=end)
	{
		mid=(start+end)/2;
		
		if(array[mid]==target)
		{
			return ++mid;
		}
		else if(target>array[mid])
		{
			start=mid+1;
		}
		else if(target<array[mid])
		{
			end=mid-1;
		}
	}
}

int main()
{
	int array[8]={12,3,1,5,18,10,7,35};
	
	int length=sizeof(array)/sizeof(array[0]); /*array的长度是array的大小除以单一元素的大小*/
	
	sort(array,array+length); /*可以先用内建的sort,如果没用其他排序*/
	
	int target=BinarySearch(array,length,7);
	
	cout<<target<<endl;
		
	return 0;
}

参考资料:

https://shengyu7697.github.io/cpp-binary-search/

https://www.google.com/search?q=binary+search+c%2B%2B&source=hp&ei=YqdRYvXZObCymAW0rL7oBQ&iflsig=AHkkrS4AAAAAYlG1cnO1ZSUym6ofO_RVje6d3oMkYtUZ&oq=Binary+Search&gs_lcp=Cgdnd3Mtd2l6EAEYAjIICAAQgAQQsQMyCAgAEIAEELEDMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgAQyBQgAEIAEMgUIABCABDIFCAAQgARQAFgAYO8HaABwAHgAgAE3iAE3kgEBMZgBAKABAqABAQ&sclient=gws-wiz


<<:  【C#】Multi Value Return

>>:  【C#】Creational Patterns Singleton Mode

【Day4】:来使用STM32CubeIDE吧!

程序码导读 点开我们的main.c档案,可以看到里面密密麻麻的注解,第一次看到还真令人害怕,但其实他...

Vue.js 从零开始:v-model

表单类型是网页很常见的呈现方式,表单元素有文字框<input>、<textarea...

予焦啦!附录:那些作业系统的巨人们与参考资料

没有人是一座孤岛,而技术与软件亦然。早在 Hoddarla 抵达系列文本篇最後的基本命令列功能之前、...

[Day27] Liff Bluetooth GetAvailability

前言 昨天有提到LIFF中,与bluetooth相关的APIs,因为技术问题,将暂时移除。所以如果要...

DAY28-ASP.NET网页切换导向及状态管理-趴兔

纳今天来做做跳转页面 内导内 就是呢 假设做一个首页 可以选注册或登入 先撇开登入之後 回到首页要显...