算法第二章上机实践报告

 

  1. 实践题目: 二分查找
  2. 问题描述:输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。
  3. 算法描述:原始数据是无序的,而二分法处理数据必须有序
    1.      首先用快排对原始数据进行排序
    2.      再用二分查找处理有序数据,查找过程中,每比较一次比较数目加一,查找完成返回x下标。
    3. 快速排序:以第一个数据元素y为基准,对后面的元素进行划分,划分后的x所在位置的左段全小于等于y,右段全大于等于x。在将y左段数据与右段数据重复如上操作。由于参数是数组,上述操作完成即可得到有序数组。
    4. 二分查找:将数组的中间数与x比较,如果比x小,则继续与左段中间数比较,如果比x大,则于左段中间数比较,如果相等即放回其所在位置,直至找到为止,定义全局变量,每比较一次,加一。
  4. 算法时间及空间复杂度分析(要有分析过程)

  5. 快排实间复杂度:T=O(n)------后面元素与第一个元素比较次数
      1.       + 2O(n/2) -------分为左右两段,两子问题继续排序
      2.      =O(nlogn)
  6. 二分查找的时间复杂度:T =O(1)-----判断x与中间值是否相等
      1.          +O(n/2)------- 分为两个子问题,选择其中一个规模为1/2的子问题
      2.               = O(nlogn)    
  7. 所以该算法的时间复杂度为nlogn
  8. 心得体会(对本次实践收获及疑惑进行总结):重温了一下快速排序与二分查找

posted @ 2018-10-14 19:09  宇洁  阅读(198)  评论(0编辑  收藏  举报