第二章实验报告
Posted dalili
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章实验报告相关的知识,希望对你有一定的参考价值。
1.实践题目:7-1 二分查找
2、题目描述:在a[n]数组中使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。
3、算法描述
#include<iostream> using namespace std; int BinarySearch(int a[], int left, int right,int x,int &count){ count++; if(left == right){ if(x == a[left]) return left; else return -1; } while(left < right){ int mid = (left + right) / 2; if(x == a[mid]) { return mid; } if(x < a[mid]) return BinarySearch(a, left, mid-1, x, count); if(x > a[mid]) return BinarySearch(a, mid+1, right, x, count); } } int main(){ int n, x; cin >> n ; int a[n]; for(int i = 0; i<n; i++){ cin >> a[i]; } cin >> x; int count = 0; cout << BinarySearch(a, 0, n-1, x, count)<<endl; cout << count; return 0; }
4、算法时间及空间复杂度分析:利用二分递归查找找出X的下标,同时每进入一次递归,比较次数加1,这样空间复杂度为1,(并没有额外利用空间),时间复杂度为二分递归的时间复杂度 O(nlog n);
5、心得体会:二分查找可以有效节省时间,其实这题也就是二分查找的一个小小的添加(添加了比较次数),对递归而言,考虑比较次数应从退出递归着手,同时变量定义的位置和初始值应尤为注意。
以上是关于第二章实验报告的主要内容,如果未能解决你的问题,请参考以下文章