FANDOM


Sortowanie przez wybór (ang. Selection sort) jest jedną z prostszych metod sortowania działającą w złożoności $ O(n^2) $. Polega na wybieraniu minimalnych (lub maksymalnej w przypadku sortowania malejącego) wartości i wstawianiu ich na kolejne miejsca tablicy. W przypadku gdy minimalna wartość znajduje się na odpowiednim miejscu przechodzimy do kolejnej.

Implementacje Edytuj

Pascal Edytuj

program sortowanie_przez_wybieranie;
uses crt;
var t:array[1..5] of char;
var i,a:integer;
var znak:char;

begin
readln(t);
for i:=1 to 8 do

for a:=(i+1) to 3 do
     begin
     if (t[i]>t[a]) then
     begin
          znak := t[i];
          t[a] := t[i];
          t[i] := znak;
     end;
end.
writeln(t);
readln;
readln;
readkey;
end.

--85.237.162.47 09:01, lis 22, 2011 (UTC)przmknwrt

C++ Edytuj

 #include <stdio.h>
#include <iostream>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int il_e; // liczba elementów
  cout<<"Wpisz ilosc elementow: ";
  cin>>il_e;    //tutaj użytkownik wpisuje ile elementowa ma być tablica
  cout<<endl;
  int tab[il_e]; //tworzymy tablicę
  for (int i=0; i<il_e; i++)                 //wpisujemy wartości do tablicy
      {
       cout<<"Wpisz "<<i+1<<" element: ";
       cin>>tab[i];
      }
  int najm; //wartość zapisująca najmniejszą liczbę
  int temp; //wartość pomocnicza, do zamiany elementów tablicy
  for (int i=0; i+1<il_e; i++) // i+1 w warunku, aby wykonać tę pętlę raz mniej
      {
      najm=i; // jak mówiłem na początku pod najm podstawiamy pierwszy element
      for (int a=i; a<il_e; a++)
      //a=i: zauważmy, że w kolejnych fazach nie
      //posługujemy się elementem 1(w drugiej fazie), 1i2 (w trzeciej fazie) etc.
      //więc zaczynamy od elementu takiego, jak numer fazy(fach. tą fazę
      //nazywamy iteracją); tu przeszukujemy tablicę w posz. najm
       if (tab[a]<tab[najm]) najm=a; //jak mówiłem zapisujemy miejsce w tablicy a nie wartość

      temp=tab[i];      //   Tu
      tab[i]=tab[najm]; // zamieniam
      tab[najm]=temp;   // elementy miejscami
      };

    for (int i=0; i<il_e; i++)//pomocnicza pętla, wyświetlająca tablicę
      {
        cout<<tab[i]<<endl;
      }
    system("pause"); //nieważne
  return 0;
}