2016-03-21 20 views
0

Artan sırada sıralanan bir tamsayı dizisi için bir özyinelemeli ikili arama algoritması kullanmam gerekiyor (ör. 1,2,3,4...).Yinelemeli ikili arama algoritması nasıl uygulanır?

Ben dizi aşağıdaki sayıları içerir:

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

Ancak ikili aramanın benim şu anki uygulama sadece Nedense 3. sağındaki sayılar bulan, bu bulamazsa 9, 7

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

Dün bu soruyu gördüm ve yaklaşık 3 kişi doğru cevabı yorumladı. –

+0

Eğer sola gitmek istiyorsanız, int '' first '' sol 'nun en' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' Ilk önce git? – Ceelos

+0

@PaulBoddington, bu soruyu, kopya olarak işaretlemek için bağlantıya sahip misiniz? –

cevap

0

Eğer algoritma ne yaptığı hakkında net emin olun ve ardından özyinelemeli aramalar iyice bir göz atın:, 6 ve 5.

aşağıda benim kodudur.

İlgili konular