Soru : Aşağıdaki kod çalıştırıldığında index değişkeninin değeri ne olur ve while döngüsü kaç
defa döner?
#include<stdio.h>
#include <limits.h>
int metot(int arr[], int n)
{
int a = 0;
int b = n - 1;
while (a < b)
{
int m = (a + b) / 2;
int lv = m > 0 ? arr[m - 1] : INT_MIN;
int rv = m < n-1 ? arr[m + 1] : INT_MIN;
int mv = arr[m];
if (mv > lv && mv > rv)
return m;
if (lv > rv)
b = m;
else
a = m;
}
return a;
}
main()
{
const int n = 11;
int arr[] = {1, 1, 3, 4, 8, 11, 19, 23, 16, 7, 2};
int index = metot(arr, n);
printf("Sonuc = %d",index);
}
Cevap : Yöntem en yüksek değeri dizide 7 numaralı indekste 2 döngü çevrimine bulur.
index = 7, döngü adedi = 2