欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

二分搜索问题

程序员文章站 2022-06-02 21:21:30
...

二分搜索问题:

二分搜索问题
最坏情况下的时间复杂度为:log2(n)

	#include <bits/stdc++.h>
	
	#define SIZE sizeof(x)/sizeof(x)[0]  //这里是求已知数组的长度; 
	
int RS(int a[], const int &x ,int n)   //这里第二个参数用&是为了节省空间,当然为了防止参数值被修改,用到了const
	{
		int left=0;
		int right=n-1;
		while(left<=right)
		{
			int middle=(left+right)/2;
			if(a[middle]==x) return middle;
			else if(x<a[middle])  right=middle-1;
			else  left=middle+1;
		} 
		return -1;//表示未找到x元素  返回-1
		
	 } 
	 
	 int main()
	 {
		int x[]={11,16,5,9,4,26,74,63,14,18,2};
		std::sort(x,x+11);
		printf("将数组从小到大排序的结果为: \n");
		for(int i=0; i<SIZE; i++)
		{
			printf("%d  ",x[i]);
		 } 
		printf("\n");
		printf("查找数9:%d\n",RS(x,9,11));
		printf("查找数3:%d\n",RS(x,3,11));
		return 0;
	 }

二分搜索问题

相关标签: 算法设计与分析