二分搜索问题
程序员文章站
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;
}
上一篇: SpringMVC框架学习总结