首页 > 其他 > 详细

第二章上机实验报告

时间:2019-09-23 00:00:45      阅读:113      评论:0      收藏:0      [点我收藏+]

实验报告

1、实践题目:改进二分搜索算法

2、问题描述:设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。

输入格式:

输入有两行:

第一行是n值和x值; 第二行是n个不相同的整数组成的非降序序列,每个整数之间以空格分隔。

输出格式:

输出小于x的最大元素的最大下标i和大于x的最小元素的最小下标j。当搜索元素在数组中时,i和j相同。 提示:若x小于全部数值,则输出:-1 0 若x大于全部数值,则输出:n-1的值 n的值

3、算法描述:

整体思路是在方法中先判断是否比最小小或比最大大,然后用while循环,判断是否存在,若不存在,则用二分法找到比他大的的最小数和比他小的最大数。

4、算法复杂度:

时间复杂度:每执行一次while循环,数组大小减少一半,最坏情况下while被执行O(logn)次,所以时间复杂度为O(logn)

空间复杂度:不需要其他空间,空间复杂度为O(1)

5、心得体会:

刚开始想了很久要怎么做,不过后面翻了翻书发现其实跟书上的例子差别不大,而且又是没有重复数的数组,就模仿书上做下去了。最后遇到最大的难点居然是输出:在数组中找到x时是输出两次位置,而我一直只输出一次,最后的时候才反应过来会不会是输出两次,然后还真是要输出两次。感觉这里有点坑

 

第二章上机实验报告

原文:https://www.cnblogs.com/u1495155/p/11569991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!