第二章实践报告

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、心得

      在本次实验过程中,与伙伴们相互合作,能从伙伴身上学到自己未能掌握的知识,另外这次实验也能检验到自身学习的进度,方便自己进行复习。

posted on 2018-10-14 13:45  邓Loser  阅读(119)  评论(0编辑  收藏  举报