piątek, 7 marca 2014

Sortowanie ciągu liczbowego



Sortowanie – jeden z podstawowych problemów informatyki. Polega na uporządkowaniu zbioru danych względem pewnych cech charakterystycznych każdego elementu tego zbioru. Szczególnym przypadkiem jest sortowanie względem wartości każdego elementu, np. sortowanie liczb, słów itp.
Algorytmy sortowania są stosowane w celu uporządkowania danych, umożliwienia stosowania wydajniejszych algorytmów (np. wyszukiwania) i prezentacji danych w sposób czytelniejszy dla człowieka.
Jeśli jest konieczne posortowanie zbioru większego niż wielkość dostępnej pamięci, stosuje się algorytmy sortowania zewnętrznego.

Przykładowe algorytmy sortowania

W podanej złożoności n oznacza liczbę elementów do posortowania, k liczbę różnych elementów.

Stabilne

Elementy o równej wartości będą występowały, po posortowaniu, w takiej samej kolejności jaką miały w zbiorze nieposortowanym.
  • sortowanie bąbelkowe (ang. bubblesort) – O(n^2)
  • sortowanie przez wstawianie (ang. insertion sort) – O(n^2)
  • sortowanie przez scalanie (ang. merge sort) – O(n\log n), wymaga O(n) dodatkowej pamięci
  • sortowanie przez zliczanie (ang. counting sort lub count sort) – O(n+k), wymaga O(n+k) dodatkowej pamięci
  • sortowanie kubełkowe (ang. bucket sort) – O(n), wymaga O(k) dodatkowej pamięci
  • sortowanie pozycyjne (ang. radix sort) – O(d (n+k)), gdzie k to wielkość domeny cyfr, a d szerokość kluczy w cyfrach. Wymaga O(n+k) dodatkowej pamięci
  • sortowanie biblioteczne (ang. library sort) – O(n \log n), pesymistyczny O(n^2)

Niestabilne

  • sortowanie przez wybieranie (ang. selection sort) O(n^2) – może być stabilne po odpowiednich zmianach
  • sortowanie Shella – (ang. shellsort) złożoność nieznana;
  • sortowanie grzebieniowe – (ang. combsort) złożoność nieznana;
  • sortowanie szybkie – (ang. quicksort) Θ(n \log n), pesymistyczny O(n^2); z wykorzystaniem algorytmu selekcji "mediana median" ("magicznych piątek") do wyszukiwania mediany, optymistyczna złożoność to O(n \log n),
  • sortowanie introspektywne – (ang. introspective sort lub introsort) O(n \log n);
  • sortowanie przez kopcowanie – (ang. heapsort) O(n \log n);


Brak komentarzy:

Prześlij komentarz