【解決方法】二分探索の失敗回数


説明
二分探索を使用して配列内の要素を検索しようとして失敗した回数を返すコードを記述します。
コードは
ユーザーからの入力として配列のサイズを取得します
ユーザーからの入力としての配列の要素
ユーザーからの入力として検索しているキー
サンプル入力:
5
2 3 4 5 8
8

サンプル出力:
2

私が試したこと:

Java
import java.util.*;
 class Source {
   public int getBinarySearchUnsuccessfulComparisonCount(int[] inputArr, int key) {
   // Write your code here
  }
   public static void main(String args[] ) throws Exception {
       Source bs = new Source();
       Scanner scanner = new Scanner(System.in);
       int size = scanner.nextInt();
       int array[] = new int[size];
       for (int i = 0; i < size; i++) {
           array[i] = scanner.nextInt();
       }
       int key = scanner.nextInt();
       System.out.println(bs.getBinarySearchUnsuccessfulComparisonCount(array, key));
 }
}

この問題の解決策を提示し、解決方法を説明してください

解決策 1

引用:

この問題の解決策を提示し、解決方法を説明してください

私たちはあなたのためにあなたの仕事をするためにここにいるのではありません。 これはあなたの課題なので、少なくともそれを解決するために努力することが期待されています。 それを行う方法については、質問で説明する必要がありますが、何を意味するのかわかりません 「検索に失敗した回数」.

解決策 2

パブリック クラスの失敗したAttemptsBinarySearch {
public int getBinarySearchUnsuccessfulComparisonCount(int[] inputArr, int key) {
int 左 = 0;
int right=inputArr.length-1;
int カウント = 0;
while(右>=左){
int mid = left+(right-left)/2;
if(inputArr[mid]==キー){
壊す;
}
else if(inputArr[mid]>キー){
右=中-1;
}そうしないと{
左=中+1;
}
カウント++;
}
リターンカウント;
}
public static void main(String args[] ) 例外をスローします {
失敗したAttemptsBinarySearch bs = 新しい失敗したAttemptsBinarySearch();
Scanner scanner = new Scanner(System.in);
int サイズ = scanner.nextInt();
int 配列[] = 新しい整数[size];
for (int i = 0; i < サイズ; i++) {
配列[i] = scanner.nextInt();
}
int キー = scanner.nextInt();
System.out.println(bs.getBinarySearchUnsuccessfulComparisonCount(array, key));
}
}

コメント

タイトルとURLをコピーしました