第二章上机实践报告

实践报告任选一题进行分析。内容包括:

  1. 实践题目
  2. 问题描述
  3. 算法描述
  4. 算法时间及空间复杂度分析(要有分析过程)
  5. 心得体会(对本次实践收获及疑惑进行总结)
  1. 算法的第二道题目
  2. 刚开始分析的时候,当所求数字在序列数字之间时,在求其相邻数字的下标时没有更好地与序列中位数下标[mid]联系起来,直到同伴讲解自己才明白其求法;在x大于或小于序列中所有数字的代码中,刚开始忘记加return语句导致结果重复;在在x等于序列中某一数字的代码中,没有加return(或break)语句,导致循环无法停止
  3. 该算法基于二分搜索算法,且有五种情况,代码先考虑理想状况。   二分搜索算法会有一个while 循环来查找数字x,内部会有三个if语句,需要在x==a[mid]时添加语句return(或break),从而跳出循环;   在while 循环前需添加两个if 语句,使x<a[left]或x>a[right]时有输出结果,且各要有return 语句,以免与后面重复;   在while循环后面同样要有两个if 语句,考虑x<a[mid]与x>a[mid],使所求数字在序列数字之间时也有输出结果
  4. 每执行一次算法的while循环,待搜索数组的大小就减小一半,因此,在最坏情况下,while循环被执行了O(logn)次,循环体内运算需要O(1)时间,因此整个算法在最坏情况下的计算时间复杂性为O(logn)。     该算法定义变量mid=(l+r)/2,再借助mid来改变l/r的值,这与问题规模n大小无关,所以其空间复杂度为O(1)
  5. 我的道题思路刚开始虽然不是那么准确、简单,但在同伴帮助下弥补了整个不足,这有助于缩短浪费的时间,也让我更有动力去完成它,这对我的帮助挺大的。这个过程也告诉我先从最简单的情况出发,再考虑其他情况,若不能有解题思路,先从一个个例子的解题过程中去发现规律

猜你喜欢

转载自www.cnblogs.com/sxty/p/9783391.html