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);