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

算法第二章上机实践报告

时间:2018-10-14 20:57:28      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:使用   相等   编程基础   排列   基本   搜索   难度   查找算法   记录   

1.实践题目

    7-1 二分查找

2.问题描述

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

3.算法描述

       二分查找的基本思想是将n个元素分成大致相等的两部分,用a[n/2]与x做比较,如果x=a[n/2],则找到x,算法停止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x。同时设置一个计数器num记录比较次数,每比较一次,num++。

4.算法时间及空间复杂度分析(要有分析过程)

    时间复杂度:while循环的次数就是时间复杂度,总共有n个元素,渐渐跟下去就是n, n/2, n/4,....n/2^k,其中k就是循环的次数,令n/2^k=1可得k=log2n,所以时间复杂度为O(logn)。

    空间复杂度:辅助空间是常数级别的,即空间复杂度是O(1)。

5.心得体会(对本次实践收获及疑惑进行总结)

   这次的算法问题难度不大,但是我的编程基础不是很扎实,所以在编程过程中出现了一些小的错误导致比较次数不能正确输出,在请教了我的队友之后才把问题解决了。由此我体会到了合作的重要意义。

算法第二章上机实践报告

标签:使用   相等   编程基础   排列   基本   搜索   难度   查找算法   记录   

原文地址:https://www.cnblogs.com/challenge-x/p/9787370.html

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