Algorytmy » Sortowanie

Selection Sort

  • 2006-01-21 11:04
  • 6 komentarzy
  • 1334 odsłony
  • Oceń ten tekst jako pierwszy
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

Adam.Pilorz 2005-11-24 20:53

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

MrSquell 2005-02-09 03:24

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 )

Ktos 2003-12-10 09:31

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

|PtaH| 2003-12-10 00:11

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

Marooned 2003-12-05 12:58

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

netvalker 2003-12-04 21:59

Sortowanie Bąbelkowe :)