1. Zadanie Domowe
Dane:
T[0] … T[N-1]
T[0] ≤ T[1] … ≤ T[N-1]
Algorytm: (by Maciek P. jakby coś nawalał to pisać :P)
void binarne(int x) { int p=0; int q=n-1; //n, to oczywiście liczba liczb (trochę głupio brzmi) w zbiorze ;) while (p<q) { s=(p+q)/2; //kod musi być w miarę łatwy do zrozumienia nawet dla normala, żadnego szpanu :), slic3 if (tab[s]>=x) q=s; else p=s+1; } if (tab[p]==x) cout << "Liczba jest w zbiorze"; cout << "Liczby nie znaleziono"; }
Polecenie:
Przerób podany algorytm, aby zawsze znajdywał nie pierwszą, ale ostatnią szukaną liczbę z tablicy.
………………………………………………………………………………………………………………………………..
Wielkie dzięki za edit, Maciek.
pozdr0,
slic3
…………………………………………………………………………………………………………………………………
A tutaj rozwiązanie ;)
void binarne(int x) { int p=0; int q=n-1; //n, to oczywiście liczba liczb (trochę głupio brzmi) w zbiorze ;) while (p<q) { s=(p+q+1)/2; //to +1 po to, żeby zaokrągliło wynik do góry, ewentualnie można napisać "ceil((p+q)/2);" if (tab[s]>=x) q=s-1; else p=s; } if (tab[p]==x) cout << "Liczba jest w zbiorze"; cout << "Liczby nie znaleziono"; }
page revision: 14, last edited: 15 Oct 2007 17:40