Startuj z nami!

www.szkolnictwo.pl

praca, nauka, rozrywka....

mapa polskich szkół
Nauka Nauka
Uczelnie Uczelnie
Mój profil / Znajomi Mój profil/Znajomi
Poczta Poczta/Dokumenty
Przewodnik Przewodnik
Nauka Konkurs
uczelnie

zamów reklamę
zobacz szczegóły
uczelnie

Nie znaleziono szukanej frazy! Poniżej znajduje się fraza najbardziej przypominająca szukaną.

Sortowanie przez wybieranie

Sortowanie przez wybieranie

Sortowanie przez wybieranie - jedna z prostszych metod sortowania o złożoności O(n2). Polega na wyszukaniu elementu mającego się znaleźć na zadanej pozycji i zamianie miejscami z tym, który jest tam obecnie. Operacja jest wykonywana dla wszystkich indeksów sortowanej tablicy.

Algorytm przedstawia się następująco:

  1. wyszukaj minimalną wartość z tablicy spośród elementów od i+1 do końca tablicy
  2. zamień wartość minimalną, z elementem na pozycji i

Gdy zamiast wartości minimalnej wybierana będzie maksymalna, wówczas tablica będzie posortowana od największego do najmniejszego elementu.

Algorytm jest niestabilny . Przykładowa lista to: [2a,2b,1] → [1,2b,2a] (gdzie 2b=2a)

Przykład

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 sie wartość minimalną.

nr iteracji (wartość i)tablicaminimum
0[9,1,6,8,4,3,2,0]0
1[0,1,6,8,4,3,2,9]1 (element znajduje się na właściwej pozycji)
2[0,1,6,8,4,3,2,9]2
3[0,1,2,8,4,3,6,9]3
4[0,1,2,3,4,8,6,9]4 (...)
5[0,1,2,3,4,8,6,9]6
6[0,1,2,3,4,6,8,9]8 (...)

Algorytm można nieco przyspieszyć, gdy tablica jest wypełniana z obu końców, tj. wyszukiwane jest równocześnie minimum i maksimum.

Implementacja

Sortowanie przez wybieranie w C++:

  • przez wyszukiwanie największego składnika:
 int Max_element_indeks(int n)   {     int max = 0;     for (int i = 1; i < n; i++)       if (t[i] > t[max])         max = i;     return max;   }   void Selection_sort(int n)  {    for (int i = n; i >= 2; i--)    {      int max = Max_element_indeks(i);      if (max != i - 1)        swap(t[i - 1], t[max]);    }  }
template<typename It>void selection_sort(It begin, It end){  for (; begin != end; ++begin)    std::iter_swap(begin, std::min_element(begin, end));}
  • przez wyszukiwanie najmniejszego składnika:
#include <cstdlib>#include <iostream> using namespace std; void selection_sort(int n, int t[]); int main(void){   int tab[20];   srand(time(NULL));   for(int i=0; i<20; i++) {      tab[i] = rand()%100;      cout << tab[i] << " ";   }   cout << endl;   selection_sort(20, tab);   for(int i=0; i<20; i++) cout << tab[i] << " ";   cout << endl;   return 0;} void selection_sort(int n, int t[]){   int i, j, k;   for(i=0; i<n; i++) {      k=i;      for(j=i+1; j<n; j++) if(t[j]<t[k]) k=j;      swap(t[k], t[i]);   }}

Sortowanie przez wybieranie w ruby

#!/usr/bin/ruby # sortowanie przez wybor  def wsort(list)for i in 0...(list.size - 1)min = ifor j in (i+1)...(list.size)if list[j] <= list[min]min = jendlist[i], list[min] = list[min], list[i]endendreturn listend list = []puts "podaj dane do posortowania CTRL-D - koniec"while line = $stdin.gets  list << line.to_iendputs "Dane posortowane"puts wsort(list)


Inne hasła zawierające informacje o "Sortowanie przez wybieranie":

Podróżnik ...

Dziady (zwyczaj) ...

Pęcice ...

Zambezi ...

Rodzimy Kościół Polski ...

Ren ...

Dzień Zmarłych ...

Dzień Zaduszny ...

Muzeum Zoologiczne Tadasa Ivanauskasa w Kownie ...

II wiek ...


Inne lekcje zawierające informacje o "Sortowanie przez wybieranie":

Potęgi (plansza 2) ...

10b Wyprzedzanie - część 2 (plansza 11) ...

01 Znaki drogowe - tabliczki do znaków drogowych - część 2 (plansza 20) ...


Zachodniopomorskie Pomorskie Warmińsko-Mazurskie Podlaskie Mazowieckie Lubelskie Kujawsko-Pomorskie Wielkopolskie Lubuskie Łódzkie Świętokrzyskie Podkarpackie Małopolskie Śląskie Opolskie Dolnośląskie