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";
}
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License