1. 实践题目
  2. 问题描述
  3. 算法描述
  4. 算法时间及空间复杂度分析(要有分析过程)

  5. 心得体会(对本次实践收获及疑惑进行总结)

1,实践题目:

7-1 二分查找 (20 分)

输入n值(1<=n<=1000)、n 个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。

输入格式:

输入共三行: 第一行是n值; 第二行是n 个整数; 第三行是x值。

输出格式:

输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。

输入样例:

4

1 2 3 4

1

输出样例:

0

2

 

2,问题描述:

    要求设置一个数组长度为n的数组,输入数组,对它进行排序,用二分查找某一数值x,查找成功则输出其所在位置及比较次数,否则输出-1及比较次数;

n的范围、输入格式及输出格式都有要求:0<=n<=1000;第一行输入要先输入的数值是n、第二行是输入整个数组中的n 个数值,用空格隔开、第三行是要查询的数值x;查找成功则输出其所在位置及比较次数,否则输出-1及比较次数,用空格隔开或换行都行。

 

3.算法描述:

    首先定义了两个变量L和R代表数组的前标和后标,每进行一次二分查找就会改变一次L或者R,直到最后L=R便查找结束。

4算法时间及空间复杂度分析(要有分析过程):

    数组长度为n,每进行一次长度就缩小一半,最坏情况下O(n)=logn;由于辅助空间是常数级别的所以:空间复杂度是O(1);

 

5心得体会(对本次实践收获及疑惑进行总结):

    这次二分搜索法实际上并不困难,但是自己选用的算法比较简单,实际上也有多种实现的算法,如递归或非递归,下课后我也实践了一些别的算法,感受到了算法的魅力。但是同时我发现了自己对于分析时间空间复杂度的经验不足,一开始无法自主有效的分析,最后还是查找了百度上的回答才有所领悟,证明自己还有很多的不足处需要改进。

 

 

 

posted on 2018-10-14 13:49  Homerlam  阅读(137)  评论(0编辑  收藏  举报