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

    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.实验课的个人感想

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

  • 相关阅读:
    iOS 界面翻转切换动画
    深度解析Objective-C笔试题
    Objective-C内存管理基础
    Objective-C入门教材
    Objective-C代码学习大纲(6)
    Objective-C代码学习大纲(5)
    Objective-C代码学习大纲(4)
    sharedPreferences
    ListView判断滑动底部
    Oracle 游标疑问
  • 原文地址:https://www.cnblogs.com/RS-Sakura/p/9824656.html
Copyright © 2011-2022 走看看