Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Wizardius

Sortowanie bąbelkowe - pomóżcie to zrozumieć.

Polecane posty

Witajcie. Próbowałem dzisiaj napisać algorytm sortowania bąbelkowego. Doszedłem do takiej formy


void sort_bbl(int d[],int n){
int l,v,p;
for(l=0;l<n;l++)
if(d[v]<d[v-1]){
p=d[v-1];
d[v-1]=d[v];
d[v]=p;
}
}

Oczywiście nie działało tak jak powinno. Więc zajrzałem do algorytmu już zrobionego i okazało się, że brakuje mi jednej pętli. Powinno wyglądać tak:


void sort_bbl(int d[],int n){
int l,v,p;
for(l=0;l<n;l++)
for(v=n-1;l<v;v--)
if(d[v]<d[v-1]){
p=d[v-1];
d[v-1]=d[v];
d[v]=p;
}
}

Teraz pytanie do was. Co robi ta druga pętla?

for(v=n-1;l<v;v--)

Bo na chwile obecną niby rozumiem, ale nie rozumiem. :D Ja wiem, że może wam sie to wydawać dość głupie. Coś mi tam świta, że przecież z jedną pętla to nie ma prawa działać, ale z drugiej strony nie umiem logicznie sobie wytłumaczyć, co robi ta druga.

Link do komentarza
Udostępnij na innych stronach

Hint: Bez tej drugiej pętli v jest stałe i równe 0, więc to nie ma prawa działać (stale porównujesz te same dwa elementy, w tym jeden z indeksem -1, co w zależności od języka programowania i kompilatora może się skończyć różnie, ale dla większości danych nie zwróci poprawnego wyniku).

Rozpisz sobie na kartce kilka przebiegów tego algorytmu i powinieneś wyłapać co robi ta druga pętla.

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...