标签:检索 二分 两种 int mid high 算法 查找 low
写出两种检索算法,在一个排好序的数组T[1…n]中查找x
1.问题
写出两种检索算法:在一个排好序的数组T[1…n]中查找x,如果x在T中,输出x在T的下标j;如果x不在T中,输出j=0.按实验模板编写,“分析”部分仅给出复杂度结果即可。
2.解析
顺序查找:按照数组长度,一个个查找,直到找到关键词后返回该关键词下标,找不到则返回0
二分查找:将数据不断进行对半分割,并检查每个分区的中间元素
3.设计
顺序查找:
for(int i=0; i<len; i++){
if(array[i]==x){
k = 1;
cout << i << " ";
}
}
if(k == 0) cout<<"j=0";
二分查找:
int binary_search(int x, int a[], int n){
int low, high, mid, count=0;
low = 0;
high = n-1;
while(low < high){
mid = (low+high)/2;
if(x < a[mid])
high = mid-1;
else if(x > a[mid])
low = mid+1;
else if(x == a[mid]){
cout<<mid;
count = 1;
break;
}
}
if(count == 0)
cout<<"j=0";
return 0;
}
4.分析
时间复杂度:
顺序查找:O(n)
二分查找:O(log2(n))
标签:检索,二分,两种,int,mid,high,算法,查找,low 来源: https://blog.csdn.net/Makabakaba/article/details/115083726
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。