Wyszukiwanie binarne liczb w tablicy

0

Program do wyszukiwania binarnego liczby w tablicy i wyświetlania jej miejsca. Udało mi się takie coś:

#include <stdio.h>
void szukaj(int tab[], int liczba, int szukana)
{
    int start=0;
    int end=liczba-1;
    int srodek;
        do{
        srodek=(start+end)/2;
        if (tab[srodek]==szukana){
        printf ("Podana liczba znajduje sie na pozycji: %d\n", srodek+1);
        break;
        }
else{
if(szukana<tab[srodek])
end=srodek-1;
else
start=srodek+1;
}
if (start>end) printf("Nie znaleziono podanej liczby\n");
}while (start<=end);
}
int main(){
int tab[]={47,33,31,29,28,26,24,23,20,19,18,12,10,9,7,6,5,2,1};
int a,i;
int b=sizeof(tab)/sizeof(int);
for(i=0; i<b; i++)
{
printf("%-3d",tab);
}
printf("\nWprowadz liczbe do sprawdzenia:\n");
scanf("%d", &a);
szukaj(tab,b,a);
return 0;
}

Ale zastanawiam się jak zmienić liczby na losowe i zrobić to bez używania rozmiaru tablicy. Drugi problem to po uruchomieniu programu na górze przed 1 poleceniem wyświetla jakieś liczby.

0
  1. Możesz wygenerować zbiór.
  2. Są 3 opcje:
    1. Przekazanie wielkości tablicy
    2. Przekazanie iteratorów początku i końca tablicy
    3. Użycie tablicy wskaźników na liczby zakończonej nullem.
0

Proponowałbym tak jak napisał @spartanPAGE... przekazać iteratory początku i końca tablicy. Będzie to bardziej efektywne.

0

Co to są iteratory? Bo jeszcze nigdy czegoś takiego nie używałam.

2

http://pl.wikipedia.org/wiki/Iterator
Coś, co pozwala na iterowanie po kolekcji.
W najprostszym przypadku: wskaźniki.

0
dicappo napisał(a):

Co to są iteratory?

Można powiedzieć, że takim specjalnym przykładem iteratora jest wskaźnik.

1 użytkowników online, w tym zalogowanych: 0, gości: 1