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


    1.实践题目:

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

    2.问题描述:

    输入格式:

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

    输出格式:

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

    输入样例:

    4
    1 2 3 4
    1
    

    输出样例:

    0
    2

    3.算法描述

    运用二分查找方法。

    一、构造二分查找函数:(1)初始化左下标left为0、右下标right为n-1、比较次数count为0、mid为二分查找中间的数。(2)二分查找输入数x,若mid大于或小于x,则继续进行二分查找;若mid正好等于x,则输出mid下标及此时的count值。(3)当left大于right,则证明改有序数列不存在x,输出-1。

    二、在主函数中按要求输入,并调用二分查找函数。

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

     由于运用了二分查找法,每次都折半查找,即将问题分为等大的两个小问题,所以时间复杂度为:T(n) = T(n/2) +O(1)=O(logn);由于辅助空间是常数级,所提空间复杂度为O(1)。

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

    这次上机实践和以往不同在于两人合作,一个人打代码,另一个人看着她打代码。两个人发现的问题也比一个人多,有报错时可以更快的找到解决方法,提高了时间效率。虽然二分查找法在大一下学期的数据结构课上学过,但本次上机让我更加清晰的了解了二分法的具体实践。我觉得老师在我们打完一题的代码后,让两人中非打代码的同学讲述一遍算法实现的方法很好,可以检验该同学是否真正理解该算法,及时发现问题所在。

  • 相关阅读:
    [转]wireshark 实用过滤表达式(针对ip、协议、端口、长度和内容) 实例介绍
    [转]HTTPS连接的前几毫秒发生了什么
    将生成的数据写入文件
    linux查看网络监听端口
    [转] Linux下移动virtualbox虚拟硬盘丢失eth0
    sockaddr结构体
    以十六进制形式打印字符串
    pta5-9 Huffman Codes (30分)
    pat1068. Find More Coins (30)
    hduoj 2955Robberies
  • 原文地址:https://www.cnblogs.com/chengyi1102/p/11586471.html
Copyright © 2020-2023  润新知