码迷,mamicode.com
首页 > 编程语言 > 详细

算法第二章上机实践报告

时间:2018-10-14 16:45:21      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:没有   ret   最坏情况   end   middle   心情   次数   情况   掌握   

1.实践题目:输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。

2.问题描述:通过二分搜索技术,找出数组中与x数值相等的数字,然后输出该数字在数组中的下标,若当left大于right的时候,则代表数组中不存在x数字,输出-1与比较次数。

3.算法描述:

int BIN(int a[], int key, int n) {
int left = 0;
int right = n - 1;
int t = 0;
while (left <= right) {
int middle = (left + right) / 2;
t++;
if (key == a[middle])
{
cout << middle<<endl;
cout << t;
return middle;
}
if (key > a[middle])left = middle + 1;
else { right = middle - 1; }

}
cout << "-1"<< endl;
cout << t ;
return -1;
}

4.时间复杂度:O(logn)因为最坏情况下while循环执行了logn次 ,空间复杂度o(1)只有一次循环。

5.心得体会:二分搜索算法很方便,而且难度较小,能够较好理解并且掌握,但在编程过程中,我和组员吴梓轩同学讨论写出代码后,一直不能实现正确结果,而我们的编程逻辑在思考讨论后,也认为是没有问题的,编译也能通过,最后在问了老师才知道,我们在while循环后面不小心打了一个分号,导致整个while循环没办法执行,导致整个代码失去用处。所以在以后的编程中,我们要吸取教训,减少这种低级错误,要更为严谨地进行编程,节约时间也不会影响心情。

算法第二章上机实践报告

标签:没有   ret   最坏情况   end   middle   心情   次数   情况   掌握   

原文地址:https://www.cnblogs.com/ljtderblogs/p/9786147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!