Próbowałem następującego kodu, aby znaleźć minimalny element w cyklicznej posortowanej tablicy. Ale zawiedzie, gdy niski = 1 i wysoki = 2, ponieważ środek jest zawsze 1, a [środkowy] = a [1] jest zawsze większy niż a [wysoki].znajdowanie minimalnego elementu w cyklicznej posortowanej tablicy
Próbuję użyć wyszukiwania binarnego tutaj, aby znaleźć rozwiązanie.
//finding the minim element in the cyclic sorted array
int arrC[]={10,13,1,3,4,5,8};
int low=0,high =6;
int mid=0,reset =1;
while (low < high)
{
mid = (low+ high)/2;
if (arrC[mid]>arrC[high])
{
low = mid;
}
else if (arrC[mid] < arrC[high])
{
high = mid;
}
}
printf("minimum element is %d",arrC[mid+1]);
Masz na myśli obracaną tablicę? – aaronman
Tak @ aaronman. Jest to obrócona posortowana tablica. – krrishna
Możesz wydrukować 'arrC [mid + 1]', ale twój minimalny mid to 0 ... Twój kod nie powiedzie się w najprostszym przypadku, gdy pierwszy element jest najmniejszy, także gdy tablica ma pojedynczy element. –