Dolną granicą dla dowolnego sortowania opartego na porównaniu jest O (nlog (n)). Nie możesz mieć żadnego algorytmu sortowania opartego na porównywaniu elementów ze sobą, który działa w najgorszym przypadku niższym niż ten limit.
zarówno sortowanie scalone, jak i sortowanie sterty mają najgorszy czas działania O (nlog (n)) ... A sortowanie szybkie ma najgorszy czas działania O (n^2), ale średni czas działania jest O (n^log (n)).
Warto nadmienić, że chociaż szybki sortowanie ma najgorszy czas działania O (N^2), to czasami bije inne algorytmy o czasie działania O (nlog (n)) (jak heapsort) ze względu na posiadanie mały stały współczynnik i przydatność do wydajnego wykonywania na aktualnych architekturach maszyn.
liniowy algorytmów sortowania, który umożliwia sortowanie całkowite (ale nie ograniczają się tylko do nich) w liniowym O czas (n) w nie porównawczą (przykład: zliczania rodzaju wiadra sortowania i sortowanie pozycyjne)
MSD Sortowanie radix może sortować ciągi używając leksykograficznej kolejności cyfr (w tym przypadku znaków) i od lewej do prawej.
Najpierw sortuje wszystkie ciągi za pomocą lewego skrajnego znaku za pomocą innego algorytmu sortowania liniowego (np. Sortowanie wiadra), a następnie sortuj je ponownie za pomocą znaku drugiego od lewego znaku i tak dalej, aż zostaną posortowane według znaku znajdującego się najbardziej na prawo. Na końcu tablica zostanie całkowicie posortowana.
Ten algorytm będzie miał czas pracy O (k * N), gdzie N jest liczbą elementów, a k jest średnią długość klucza długość (słowo w tym przypadku będzie to> = 10 & & < = 100).
Nie ma "najszybszego" sposobu, jeśli nie masz informacji o możliwej kolejności przychodzących danych. Musisz wybrać jeden z popularnych algorytmów na podstawie najlepszej możliwej i najgorszej możliwej wydajności (i prawdopodobieństwa, że tak) oraz ograniczenia dostępu do pamięci/danych. –
Czy założono, że cała tablica mieści się w pamięci? – goat