• 算法第二章上机实践报告


    1.实践题目

      二分查找

    2.问题描述

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

    3.算法描述

      代码的核心部分:

    while(left <= right){
            mid = (left + right) / 2;
            cnt++;
            if(a[mid] == x) break;
            else if(a[mid] < x){
                left = mid + 1;
            }
            else right = mid - 1;
        }

      二分查找的理解即为:取一段数列的中点,如果中点恰好为该数字则退出;

      若中点比查找的数x小,则在数列的右端查找(left = mid + 1),否则在数列的左端查找;

      不断重复,直到查找到x,若不存在,则返回-1及比较次数。

    4.算法时间及空间复杂度分析

      二分查找也可称为折半查找,即不断取n个元素数组的中点,剩余元素从n/2到n/2^k不断减少;

      到最后查找到的情况下,n/2^k=1,即可得k=logn,时间度复杂度为O(logn);

      至于空间复杂度的求解本人不太熟练,在百度结果后得到,求空间复杂度的过程比较复杂,简单算法的空间复杂度一般为O(1)。

    5.实验课的个人感想

      感觉结对编程的合作方式非常好,在解决算法问题的时候不再有单打独斗的感觉,有问题可以大家一起解决。

  • 相关阅读:
    Python实现TCP服务端的并发
    python程序中的线程操作
    jmeter命令行执行脚本_动态参数设置
    App客户端性能测试点总结
    App功能测试点总结
    jmeter中生成UUID作为唯一标识符
    Python Unittest进行接口测试的简单示例
    jmeter接口测试中的用例数据分离
    博客园看板娘的简单添加
    (转)后端服务性能压测实践
  • 原文地址:https://www.cnblogs.com/RS-Sakura/p/9824656.html
Copyright © 2020-2023  润新知