第二章实验实践报告
Posted idjy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二章实验实践报告相关的知识,希望对你有一定的参考价值。
实践报告
第一题
- 实践题目
- 问题描述
- 算法描述
- 算法时间及空间复杂度分析(要有分析过程)
- 心得体会(对本次实践收获及疑惑进行总结)
1.实验题目:二分查找
2.问题描述
输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。
3.算法描述
二分查找算法关键是下标的mid、left、right的变化,开始是left=0和right=length-1,接着就要判断需要查找的值x和mid的比较,mid=(left+right)/2,如果x大于mid,范围就变成mid+1到right,小于则变成left到mid-1,等于则直接返回mid,这就是二分查找的基本内容,然后题目要求二分查找的次数,就是求循环的次数。
4.算法时间和空间复杂度:
二分法的基本思想就是将n个元素分成大致的两半,拿x和mid去比较,然后继续通过分成两部分的方式去查找,其实时间复杂度就是while的循环次数。一共有n个元素,每次循环变成n/2,n/4,n/8……n/2^k, 其中k就是循环的次数。
令n/2^k=1,得k=log2n(2为底数,n为对数)所以时间复杂度为O(log2 n)。
而空间复杂度,它是对一个算法在运行过程中临时占用存储空间大小的量度。所以它强调的是使用的辅助空间的的大小,而不是指所有的数据所占用的空间(不会像时间那样会一直累加,二分查找的空间复杂度为O(logn)。
5.心得体会
本次实验我主要遇到两个问题,第一个是二分查找算法时left和right找不好,第二个是无法求出比较次数。第一次做的时候我令left和right等于头尾元素的值,这是不理解二分查找算法导致的错误,left和right应该是下标的值。其次就是比较次数,每次分半的时候只有三种情况,而且只能运行一种,所以在分半的时候添上一条计数语句即可,这题最后做得挺好,没有什么不理解的地方。
以上是关于第二章实验实践报告的主要内容,如果未能解决你的问题,请参考以下文章