2016-03-21 9 views
0

整数配列の再帰的バイナリ検索アルゴリズムを昇順でソートする必要があります(例:1,2,3,4...)。どのように再帰バイナリ検索アルゴリズムを実装するには?

私が持っている配列は、以下の数値が含まれています

0 0 0 0 0 0 0 1 2 2 3 3 3 3 5 6 7 7 7 9 

しかし、バイナリサーチの私の現在の実装では唯一、それが9を見つけることができませんが、何らかの理由で3の右側に番号を見つける7 、6、および以下の5

が私のコードです:

private int srchHelper(int[] array, int first, int last, int x) { 
    if (first > last) return - 1; 
    int mid = (first + last)/2; 
    if (array[mid] == x) { 
     return mid; 
    } 
    if (array[mid] < x) { 
     return srchHelper(array, (mid + 1), last, x); 
    } 
    else return srchHelper(array, (mid - 1), last, x); 
} 
+0

昨日この質問を見て、約3人が正解とコメントしました。 –

+0

もしあなたが左に行きたいのであれば、あなたの 'int first'は' mid'ではなく 'most'オプション(' first')でなく、 'mid'と' last'ではなく最初に行く? – Ceelos

+0

@PaulBoddingtonあなたはその質問へのリンクを持っていますか、これを重複としてマークしていますか? –

答えて

0

あなたは、アルゴリズムが何をするかについて明確にしていることを確認し、その後、あなたの再帰呼び出しが得意長い見てみましょう。

関連する問題