1、实践题目:二分查找
2、问题描述:
输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。
3、算法描述:
while(left<=right){
//左右比较
int middle=(left+right)/2;
//取中值
t++;
//运算次数加一
if(x==a[middle]){
//查找值与数组middle位置的值相等时输出
cout<<middle;
cout<<t;
}}
4、时间复杂度
此程序每执行了一次while循环,循环的范围减半,循环内时间复杂度为O(1),最坏情况下算法时间复杂度为O(log n)。
此程序使用辅助空间存储了上界、下界、中间位置以及比较次数,与问题规模n大小无关,因此空间复杂度为O(1)
5、心得
在本次实验过程中,与伙伴们相互合作,能从伙伴身上学到自己未能掌握的知识,另外这次实验也能检验到自身学习的进度,方便自己进行复习。
原文地址:https://www.cnblogs.com/dcw1130hhh/p/9786157.html
时间: 2024-11-01 11:48:13