Selection Sort

Ktos

Selection sort, czyli sortowanie przez wybór. Algorytm ten jest jednym z najprostszych algorytmów sortowania. Polega on na tym, że zamieniamy miejscami największy element z aktualnym i tym sposobem największy wędruje nam na koniec. Potem kolejny obrót pętli, ale ostatniego elementu nie bierzemy pod uwagę itd.

const
  n=5; {a niech będzie pięc elementów}
type
  TTablice=array[1..n] of real; {tablica :)}
var
  a:TTablice;
  i:byte;

procedure sortuj(var tabl:TTablice; ost:integer);
{procedura sortowania tablicy tabl, w której ostatni element ma indeks ost}
var j, i, max: integer; {j, i to zmienne pętli, a max indeks największego elementu}
      pom: real; {zmienna pomocnicza do zamiany dwóch elementów tablicy}
begin
  for j := ost downto 2 do
  begin
    {wyszukiwanie indeksu największego elementu tablicy}
    max := 1;
    for i := 2 to j do
      if tabl[i] > tabl[max] then max := i;
    {koniec}
  {zamiana miejscami aktualnego elementu i największego elementu}  
  pom := tabl[j]; tabl[j] := tabl[max]; tabl[max] := pom;
  end;
end;

6 komentarzy

MrSquell: Zapewne tak, z tym że są dwa zastrzeżenia:

  1. O ile wiem to funkcja High pojawiła się dopiero w Delphim (a ten przykład pisany był w Turbo Pascalu, wiem z autopsji - uczestniczyłem w owej lekcji ;) )
  2. Nawet jeśli nie, to w Pascalu możesz deklarować tylko tablice stałej długości (nie mówię tu o ręcznym alokowaniu pamięci i takich tam), więc długość tablicy może być zadeklarowana "z zapasem", a tak na prawdę to dalej mogą być jakieś abstrakcyjne i nie mające znaczenia liczby. Wówczas chcemy posortować tylko x pierwszych elementów, co umożliwia nam parametr ost.
    //Tak sobie dostałem link od Ktosia, bo akurat gadaliśmy dzisiaj o sortowaniach i tak odnośnie tego tematu ;)

procedure sortuj(var tabl:TTablice; ost:integer);
{procedura sortowania tablicy tabl, w której ostatni element ma indeks ost}

ost ????? a funkcja High jest Ci znana?? :> (tak sobie przeglądam artukuły:))) hihi )

w bąbelkach zamieniasz co dwa elementy tablicy, a tutaj aktualny i maksymalny. i to cala różnica.

a moje oko też to sie nie rózni za bardzo od sortowania bombelkowego?

netvalker> sam jesteś Bąbelek - poczytaj o typach sortowań :]

Sortowanie Bąbelkowe :)