算法第二章上机报告

2020-12-13 15:14

阅读:290

 

2.问题描述

输入n值(1

1、对输入的数组

2、二分法

3.查找成功,输出其所在位置,以及比较次数

4、失败,输出-1及比较次数

 

3.算法描述

 1 #include 2 using namespace std;
 3 extern int sum=0;
 4 
 5 int BinarySearch(int a[],const int &x,int n)
 6 {
 7     int left = 0;
 8     int right = n-1;
 9     while (left  right)
10     {
11         sum++;
12         int middle = (left + right)/2;
13         if(x == a[middle]) return middle;
14         if(x > a[middle]) left = middle + 1;
15         else right = middle - 1;
16     }
17     return -1;
18 } 
19 
20 int main()
21 {
22     int n,a[1000],x,result;
23     cin>>n;
24     for(int i=0;i)
25         cin>>a[i];
26     cin>>x;
27     
28     result = BinarySearch(a,x,n);
29     coutsum;
30     return 0;
31 
32 }

 

4.算法时间及空间复杂度分析

1、时间复杂度:1)、本题使用的是二分查找算法,

         2)、while循环一次,待查找数组的长度减小至前一次的一半

         3)、时间复杂度为T(n) = O(logn)

 

2、空间复杂度:1)、辅助空间是常数级别的,

                           2)、空间复杂度为O(1)

 

5.心得体会

能理解二分法的使用,同时在三道题的巩固下,对二分法有加深了印象,同时和同学一同完成,还能互相提示,而且,还能够互相讲思路,同时能够指出对方的不足,以及自己的某些细节方面的缺漏,最后对于老师的提问还是有些害怕,就是对同学能够清晰的讲出来,但是面对老师不敢,这真的是一件很神奇的事情,下次加油。

 


评论


亲,登录后才可以留言!