zoukankan      html  css  js  c++  java
  • 算法第二章上机实践报告

    1、实践题目

    二分查找

    2、问题描述

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

    3、算法描述

    定义search函数,递归的结束条件是(right < left),输出-1;

    Search函数中,取数组a的第mid的值,将a[mid]与x比较;

    当x<a[mid],说明x在left-(mid-1)的范围内,然后继续运行search函数;

    当x>a[mid],说明x在(mid+1)-right的范围内,然后继续运行search函数;

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

    二分查找的平均查找长度为 (n+1)/n log2(n+1)-1

    当n较大时,近似于:log2(n+1)-1

    所以时间复杂度为O(log2n)

    二分查找过程中无需另外申请其他空间

    所以空间复杂度为O(1)

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

      由于题目要求输出-1,之前就有return -1的步骤,就由于-1 不属于int类型,在定义函数的时候就试着定义为double类型,然后之后结果就一直输出不对,之后就直接放弃return ,改成直接输出

      在统计次数的时候,想过是重复search函数的,然后后来发现其实直接定义个全局变量来统计就好了

      因为定义名为times,而在PTA上编译错误,之后改了就好了。

  • 相关阅读:
    Forms身份验证
    常见的js图片或内轮换效果
    模仿select选择框
    基于jquery的js幻灯片类
    js弹出幕布遮罩层
    css那些事
    选择珠宝js业务逻辑源码
    aspnet帐号密码改了会出问题
    用rails做了个书评排行网站,欢迎光临!
    转发:为什么函数式编程至关重要
  • 原文地址:https://www.cnblogs.com/LuMinghao/p/9787837.html
Copyright © 2011-2022 走看看