手アルゴリズムのレポート

1.トピック

nの値(1 <= N <= 1000)、nは整数の非降順及びXの数は、Xを見つけるためにバイナリサーチアルゴリズムを使用して、出力Xを見つけるためにここで添字(0〜N-1)と比較の数。xが存在しない場合は、出力1と比較の数。

入力フォーマット:

入力コモン三行:最初の行nの値であり、nは整数第二線である第三の線はx値です。

出力フォーマット:

ここで、添字x出力(0〜N-1)との比較の数。xが存在しない場合は、出力1と比較の数。

サンプル入力:

4
1 2 3 4
1

出力例:

0
2

2.问题描述
用二分查找在一个有序数组中找一个数,并求出比较次数。


3.算法描述

使用二分查找算法,每进行一次比较判断前计数加一。
代码如下:

書式#include <iostreamの>
名前空間stdを使用。
INT BinarySearch([]、int型のx、int型N INT){
    ; 0 =左のint
    右int型= N-1;
    int型のカウント= 0;
一方(左<=右){
        INT中間=(左+右)/ 2。
        ++数えます。
        もし(x == A [中央]){
             coutの<<真ん中<<てendl;
             coutの<<数えます。
             真ん中を返します。
}
        IF(X> [中央]){
             左=中央+ 1。
}
        他の{
             -1真ん中=右。
   }     
}
  裁判所未満<< " - 1" <<てendl;
  coutの<<数えます。
  -1を返します。
}
{int型のmain()
  int型のn;
  cinを>> N;
  int型* A =新しいINT [N];
  以下のために(INT i = 0; iがn <; iは++){
      CIN >> [i]は、
  }
  int型のx;
  cinを>> X;
  BinarySearch(X、N)
  0を返します。
}
4.算法时间复杂度及空间复杂度
原本规模为n,运用了二分法,每次都除以二,即o(logN),
空间复杂度为o(1)。
5.心得体会(对本次实践收获及疑惑进行总结)
(1.巩固了二分查找法,学会了在二分查找算法里面计数。
(2.也解决了对“在函数里面输出结果然而还要用return”的问题:因为若不用return,
循环不得停止,则也没办法退出循环输出查找不到的情况。







おすすめ

転載: www.cnblogs.com/twojiayi/p/11566937.html