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

    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.心得体会(对本次实践收获及疑惑进行总结)

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

  • 相关阅读:
    AJPFX总结mysql复制表结构,表数据
    AJPFX总结IO流中的缓冲思想
    AJPFX学习Java函数知识总结
    AJPFX总结面向对象特征之一的继承知识
    AJPFX学习笔记JavaAPI之String类
    AJPFX:学习JAVA程序员两个必会的冒泡和选择排序
    AJPFX:关于面向对象及java的一些机制的思考
    ES6 入门系列
    Android studio工具介绍
    获得 LayoutInflater 实例的三种方式
  • 原文地址:https://www.cnblogs.com/chengyi1102/p/11586471.html
Copyright © 2011-2022 走看看