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

    1. 实践题目
      7-2 改写二分搜索算法 (20 分)

      题目来源:《计算机算法设计与分析》,王晓东

      设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。

    2. 问题描述      通过
    3. 算法描述       在二分搜索的基础上,输出搜索结束时的left 和 right即为题目中需要输出的i和j

      int Bisearch(int a[], int left, int right, int x){
      int i=0;
      int j=0;
      while(left<=right){
      int mid = (left + right)/2;

      if(x == a[mid]) {
      i=j=mid;
      cout<<i<<" "<<j<<endl;
      return mid;
      }
      if(x > a[mid])
      left = mid +1;
      else
      right = mid - 1;

      }
      i = right ;
      j = left;
      cout<<i<<" "<<j<<endl;
      return -1;
      }

    4. 算法时间及空间复杂度分析(要有分析过程)该算法只是在二分搜索的基础上加上了输出,因此时间复杂度为O(nlogn)

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

        在做这道题目时,一开始想到的是另外通过比较得出结果。但是并不符合题目的要求,因此重新考虑了二分搜索算法,注意到了搜索过程中left和right变量的数值改变可以从新利用。因此在以后的编程过程中,会注意一些变量的利用,从而减少繁杂的计算。

  • 相关阅读:
    ReactJs入门
    Studio-Class Diagram
    Visual Studio-Sequence Diagram
    架构、职责、数据一致性
    Microsoft Build 2015
    Net下无敌的ORM
    SpringMVC1
    插件式Web框架
    ASP.NET的CMS
    Android Drawable绘图学习笔记(转)
  • 原文地址:https://www.cnblogs.com/yanjingyin/p/9797262.html
Copyright © 2011-2022 走看看