算法第二章上机实践报告
Posted yjfx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法第二章上机实践报告相关的知识,希望对你有一定的参考价值。
- 实践题目: 二分查找
- 问题描述:输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。
- 算法描述:原始数据是无序的,而二分法处理数据必须有序
- 首先用快排对原始数据进行排序
- 再用二分查找处理有序数据,查找过程中,每比较一次比较数目加一,查找完成返回x下标。
- 快速排序:以第一个数据元素y为基准,对后面的元素进行划分,划分后的x所在位置的左段全小于等于y,右段全大于等于x。在将y左段数据与右段数据重复如上操作。由于参数是数组,上述操作完成即可得到有序数组。
- 二分查找:将数组的中间数与x比较,如果比x小,则继续与左段中间数比较,如果比x大,则于左段中间数比较,如果相等即放回其所在位置,直至找到为止,定义全局变量,每比较一次,加一。
-
算法时间及空间复杂度分析(要有分析过程)
- 快排实间复杂度:T=O(n)------后面元素与第一个元素比较次数
- + 2O(n/2) -------分为左右两段,两子问题继续排序
- =O(nlogn)
- 二分查找的时间复杂度:T =O(1)-----判断x与中间值是否相等
- +O(n/2)------- 分为两个子问题,选择其中一个规模为1/2的子问题
- = O(nlogn)
- 所以该算法的时间复杂度为nlogn
-
心得体会(对本次实践收获及疑惑进行总结):重温了一下快速排序与二分查找
以上是关于算法第二章上机实践报告的主要内容,如果未能解决你的问题,请参考以下文章