for j := 1 to n - 1 do
begin
Min := j;
for i := j + 1 to n do
if Tab[i] < Tab[Min] then
Min := i;
Temp := Tab[Min];
Tab[Min] := Tab[j];
Tab[j] := Temp;
end;
Gdyby coś było niezrozumiałe to proszę pisać.
Chcesz wiedzieć czym są te "algorytmy"? Hmm... To bardzo ciekawe zagadnienie informatyki i matematyki. Jeżeli chcesz poznać tajemnice tych tworów ludzkiej inteligencji, to czytaj uważnie naszego bloga! My piszemy tylko o rzeczach ciekawych - np. jak zrobić naleśniki albo złożony komunikator. Zapraszamy do lektury!
for j := 1 to n - 1 do
begin
Min := j;
for i := j + 1 to n do
if Tab[i] < Tab[Min] then
Min := i;
Temp := Tab[Min];
Tab[Min] := Tab[j];
Tab[j] := Temp;
end;
void sort(int *tab, int n)
{
for(int i=0; i < n; i++) //Przeglądamy tablicę n razy
{
int min=i; //Element który będzie "pamiętał" numer
// najmniejszego elementu w tablicy
for(int j=i; j < n; j++) //Pętla porównująca
{
if(tab[min]>tab[j]) //Sprawdza czy el. o nr min jest
// mniejszy od el. o nr j
{
min = j; // Zapisuje numer najmniejszego el.
}
}
swap(tab[i], tab[min]); //Zamienia el. obecnie sprawdzany
// z el. o nr min.
}
}
1. Wyszukaj element o minimalnej wartości.
2. Zamień znaleziony element z tym na pozycji początkowej.
Posortowana zostanie tablica 8-elementowa [9,1,6,8,4,3,2,0]. W tablicy pogrubione zostaną te elementy wśród których wyszukuje się wartość minimalną.
Algorytm można nieco przyspieszyć, gdy tablica jest wypełniana z obu końców, tj. wyszukiwane jest równocześnie minimum i maksimum.
void sortuj (int *tab, int n)
{
for (int j=0; j < n-1; j++)
{
for (int i=0; i < n-j-1; i++)
{
if (tab[i] > tab[i+1])
{
swap(tab[i], tab[i+1]);
}
}
}
}
sortuj(array, 10);
{pod wyrazem Implementation należy zadeklarować odpowiednie zmienne}
var
i, j, LiczbaPol, Temp : Integer;
{teraz przechodzimy do algorytmu}
begin
{najpierw należy podać ilość pól w tablicy, u nas są to 4 pola - co widać w poprzednim przykładzie}
LiczbaPol := 4; {ilość pól dla tablicy [1..4]}
{teraz sortowanie metodą bąbelkową}
for j := 0 to LiczbaPol - 2 do
begin
for i := 0 to LiczbaPol - 2 do
begin
if Tablica[i] > Tablica[i+1] then
begin
Temp := Tablica[i];
Tablica[i] := Tablica[i+1];
Tablica[i+1] := Temp;
end;
end;
end;
end;
{należy pamiętać, że w miejsce Tablicy należy wstawić nazwę tej, która ma być posortowana}
Nasza przykładowa tablica wygląda następująco:
6 7 4 1
1. Porównujemy pierwsze 2 elementy: 6 i 7... Są one w dobrej kolejności.
6 7 4 1
2. Przechodzimy do następnej pary "7 i 4". 7>4 więc zamieniamy je miejscami.
6 4 7 1
3. Dalej porównujemy 7 i 1. 7>1 więc zamieniamy. jak widać po tym kroku największa liczba jest już na końcu tablicy.
6 4 1 7
4. Zaczynamy przeglądać tablicę od początku. 6>4
4 6 1 7
5. Kolejna para 6>1. Znów zamiana. I kolejna 6<7
4 1 6 7
6. Zaczynamy od początku sortować po raz ostatni. 4>1 zamieniamy je miejscami. Reszta jest już poukładana dobrze więc nic w kolejnych krokach się nie robi. Czyli algorytm jest zakończony.
1 4 6 7
void swap( int& a, int& b )Wywołanie funkcji w programie wygląda następująco:
{
         int temp = a;
         a = b;
         b = temp;
}
swap(a,b);Aby wszystko pięknie działało na początku programu przed funkcją główną umieszczamy nagłówek:
void swap( int& a, int& b );A na samym końcu kodu wklejamy funkcję swap.
var
a, b, c : Byte; {użyliśmy typu Byte (zakres 0 do 255), ponieważ liczby na których będziemy operowali są dosyć małe. W zależności od zapotrzebowania deklarujemy typ, który nam odpowiada}
begin
a := 2;
b := 5;
{przypisaliśmy zmiennym wartości; zmienna c jest pomocniczą (domyślnie ma wartość 0)}
c := a; {przypisaliśmy wartość a do zmiennej c; c = a = 2}
a := b; {teraz a = 5, czyli nasze b}
b := c; {b przyjmuje wartość c, czyli 2}
{teraz a = 5, b =2}
ShowMessage('a = ' + FloatToStr(a) + ' b = ' + FloatToStr(b)); {ta komenda wyświetli komunikat pokazując wartości naszych liczb}
end;
Swap(zmienna1, zmienna2)
Mamy dwie zmiennie: a = 2 i b = 5.
Algorytm tworzy zmienną pomocniczą: c = 0.
Teraz następuje przypisanie: c = a. {c przyjmuje wartość a, czyli teraz c = 2}
Następnie: a = b. {a przyjmuje wartość b, czyli teraz a = 5}
No i finalnie: b = c. {b przyjmuje wartość c, czyli wcześniejszego a; b = 2}
Efekt: Obie zmienne zamieniły się wartościami. {a = 5, b = 2}
1. Weź kromkę chleba.Z innymi algorytmami spotykaliśmy się już w wieku 6-7 lat. Było nim dodawanie. Naprawdę! A algorytm ten wygląda następująco (dodamy tu 3+2):
2. Posmaruj ją masłem.
3. Połóż na to np. ser/wędlinę.
1. Masz zaciśniętą rękę.Jak widzisz, od zawsze mamy do czynienia z algorytmami. Spytaj się np. mechanika jak On wymienia olej w samochodach. Zależnie od marki samochodu algorytm wymiany oleju silnikowego nieznacznie się zmienia.
2. Licząc prostujesz palce.
3. Policz na palcach do 3.
4. Od miejsca w którym skończyłeś liczyć policz jeszcze do 2.
5. Policz od początku ile masz palców wyprostowanych.
1. Weź kromkę chleba.Teraz nigdy nie dojdziemy do kroku 4-tego. Ponieważ będziemy wiecznie wracać do kroku 1. Dlatego w/w przykład już nie jest algorytmem.
2. Posmaruj ją masłem.
3. Wróć do kroku 1.
4. Połóż na to np. ser/wędlinę.