Witam forumowiczów.
Piszę program, który ma posortować przy użyciu sortowania bąbelkowego ciąg liczb podany przez użytkownika.
Mój kod wygląda następująco (C#, Visual Studio 2015, Windows)
Witam forumowiczów.
Piszę program, który ma posortować przy użyciu sortowania bąbelkowego ciąg liczb podany przez użytkownika.
Mój kod wygląda następująco (C#, Visual Studio 2015, Windows)
Skoro twój warunek jest pusty to ciężko by liczby się zamieniały.
for(int i = a-1; i >= 0; i--)
for(int j = 0; j < i && j < a-1; j++)
if(tablica[j] > tablica[j+1])
{
int temp = tablica[i];
tablica[i] = tablica[j+1];
tablica[j] = temp;
}
Proszę ot cały algorytm sortowana bąbelkowego.
EDIT:
Napisz jaką ocenę dostałem.
EDIT 2:
Za pierwszym razem spaliłem algorytm na maksa :D. Teraz powinno być ok, ale i tak trzeba sprawdzić bo pisałem z palca.
Mam jeszcze jedno pytanie, ten algorytm znasz na pamięć czy go gdzieś znalazłeś gotowego?
Jeżeli rozumie się poszczególne zapisy i rozumie zasadę sortowania bąbelkowego to “znanie na pamięć” jest oczywiste.
Tu masz jeszcze wytłumaczone jak to działa.
http://www.algorytm.edu.pl/algorytmy-maturalne/sortowanie-babelkowe.html
Dla utrwalenia tej zasady w pamięci proponuję wziąć 5 klocków (wież) różnej wysokości i poustawiać w dowolnej kolejności, a następnie posortować według tej metody. Będziesz też znał na pamięć tę metodę o ile oczywiście ją zrozumiesz.
No i jeszcze trzeba zrozumieć jak dokonujemy zamiany wartości dwóch liczb w szeregu.
Np. mam dwie liczby a b i niech a=3 b=5. Chcę zmienić ich wartości tak aby a=5 i b=3
Aby tego dokonać wprowadzamy zmienną pomocniczą temp i piszemy:
temp=a : a=b: b= temp
Łatwo sprawdzić, że nie wystarczyło by napisać: a=b:b=a bo wówczas otrzymamy a=5:b=5
Algorytm jest jeden i go znałem - ale i tak musiałem zerknąć o co dokładnie w nim chodziło, dlatego za pierwszym razem podałem lekko błędną wersję.
Jeśli o implementacje chodzi to jest ich tak dużo jak programistów i ciężko stwierdzić która jest najlepsza. Ja lubię implementacje na dwóch pętlach for bo jest ona dla mnie czytelniejsza niż ta na pętlach do/while i for.
Jeśli znasz algorytm to go po prostu implementujesz tak jak Ci wygodnie. Jak napisałem algorytm jest jeden - zawsze ten sam, mogą być różne implementacje. Podobnie jest ze wzorcami projektowymi. Ogólnie jest tak że nie musisz uczyć się wszystkich algorytmów i wzorców na pamięć, wystarczy że mniej więcej wiesz o co chodzi i przede wszystkim wiesz do czego służą bo w tedy wiesz kiedy jaki wzorzec lub algorytm zastosować Gdy już wiesz tyle i decydujesz się na użycie np singletona lub bubble sort to tylko sprawdzasz w książce albo na internecie jak dokładnie wygląda i go implementujesz. W przypadku wzorców często jest to przykładowa implementacja.
Dziękuje za pomoc, temat do zamknięcia.