Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Sortowanie stabilne

Ostatnio zmodyfikowano 2017-03-25 14:12
Autor Wiadomość
ultra
Temat założony przez niniejszego użytkownika
Sortowanie stabilne
» 2017-03-24 19:44:51
Cześć, mam pytanie. Jakiego algorytmu powinienem użyć do sortowania stabilnego w czasie liniowym?
P-159343
karambaHZP
» 2017-03-24 21:36:39
Co chcesz sortować?

Zwykle dobrze radzi sobie std::sort z <algorithm>
Możesz też potestować » KursyAlgorytmy zbiór algorytmów
P-159345
ultra
Temat założony przez niniejszego użytkownika
» 2017-03-24 22:07:07
Dzięki za info. Wolałbym nie używać std, ani gotowych funkcji.

Mam na wejściu n par liczb. Wczytuje je do tablicy i chce je posortować. Myślałem o sortowaniu bąbelkowym ale czy te sortowanie jest stabilne w czasie liniowym?
P-159347
karambaHZP
» 2017-03-24 22:35:18
Złożoność algorytmów sortowania zależna jest od stopnia pomieszania.
Szybciej wykona się sortowanie, gdy wystarczy zamienić jedną parę liczb,
a wolniej jeśli kolejność będzie całkiem odwrotna.
Zwykle najlepszym i najszybszym algorytmem jest QuickSort.
W dziale algorytmów (link) opisana jest złożoność każdego z nich.
Kwestia doboru odpowiedniego sortowania zależy głównie od spodziewanego stopnia wymieszania danych.
Algorytmu o złożoności liniowej O(n)? Nie znam (jeszcze :)).
P-159351
Bielan
» 2017-03-25 00:43:51
@ultra


Wolałbym nie używać std, ani gotowych funkcji.

Używanie gotowych funkcji ma masę zalet. Jeżeli nie chcesz, to rozumiem, że w celach edukacyjnych?


Myślałem o sortowaniu bąbelkowym ale czy te sortowanie jest stabilne w czasie liniowym?
Ma złożoność kwadratową a nie liniową. Nie ma sortowania o złożoności czasowej liniowej.

http://cs.stackexchange.com​/questions/3​/why-is-quicksort-better-than-other-sorting-algorithms-in-practice
https://en.wikipedia.org/wiki​/Category:Stable_sorts

@karambaHZP

Zwykle dobrze radzi sobie std::sort z <algorithm>
To sortowanie nie jest stabilne. Stabilne jest
std::stable_sort
.


Złożoność algorytmów sortowania zależna jest od stopnia pomieszania.
Nie. Złożoność algorytmów jest stała. Tak samo stałe są worst case scenario oraz best case scenario.


Szybciej wykona się sortowanie, gdy wystarczy zamienić jedną parę liczb,
a wolniej jeśli kolejność będzie całkiem odwrotna.
Ale to nie jest złożoność obliczeniowa.


Kwestia doboru odpowiedniego sortowania zależy głównie od spodziewanego stopnia wymieszania danych.
Od stopnia wymieszania ale i od rodzaju danych czy sposobu ich porównywania.


Algorytmu o złożoności liniowej O(n)? Nie znam (jeszcze :)).
Algorytm odczytania tablicy.




P-159362
Elaine
» 2017-03-25 02:00:46
Jeśli liczby mają stałą wielkość, to radix sort jest stabilny i liniowy.
P-159365
ultra
Temat założony przez niniejszego użytkownika
» 2017-03-25 09:51:29
@Bielan, otóż to. Mam do napisania projekt, nie wykorzystując gotowych funkcji i std.

Dzięki za link. Czyli ogólnie najlepiej nadaje się do tego sortowanie przez zliczanie? Stabilne i ma złożoność O(n + k).
Lub też jak @Alueril pisze, sortowanie pozycyjne. Które z tych jest bardziej wydajnościowe?

P-159367
DejaVu
» 2017-03-25 12:18:44
@ultra: nie kpij. Nie masz zielonego pojęcia o złożoności obliczeniowej, a chcesz dbać o wydajność. Zaimplementuj cokolwiek i najpierw zdobądź dużo doświadczenia w klepaniu kodu. Nawet jeżeli wybierzesz potencjalnie najbardziej wydajny algorytm nie oznacza to wcale, że będzie to optymalne w wykonaniu słabo kodującego dewelopera.
P-159376
« 1 » 2
  Strona 1 z 2 Następna strona