Mam problem ze znalezieniem dobrych zasobów, które dają najgorszy przypadek w miejscu stabilnego algorytmu sortowania. Czy ktoś wie o dobrych zasobach?
Tylko przypomnienie, w miejscu oznacza, że wykorzystuje przekazaną tablicę, a algorytm sortujący może używać tylko stałej dodatkowej przestrzeni. Stabilny oznacza, że elementy z tym samym kluczem pojawiają się w tej samej kolejności w posortowanej tablicy, jak w oryginale.
Na przykład naiwne sortowanie scalające jest najgorszym przypadkiem i jest stabilne, ale używa dodatkowej przestrzeni. Standardowy Quicksort może być stabilny, jest na miejscu, ale w najgorszym przypadku . Heapsort jest na miejscu, w najgorszym przypadku ale nie jest stabilny. Wikipedia ma niezły wykres, które algorytmy sortowania mają wady. Zauważ, że nie ma algorytmu sortowania, który wymienia, który ma wszystkie trzy warunki stabilności, najgorszego przypadku i jest na miejscu.O ( n ) O ( n 2 ) O ( n ln n )
Znalazłem artykuł Katajainen, Pasanen i Teuhola, zatytułowany „Praktyczne połączenie w miejscu” , który twierdzi, że w najgorszym przypadku istnieje stabilny wariant połączenia. Jeśli dobrze rozumiem ich wyniki, używają rekursywnie scalania (oddolnego?) Na pierwszym tablicy i na drugim tablicy i używają drugiego jako miejsce na zarysowania, aby wykonać scalenie. Wciąż to czytam, więc doceniam wszelkie informacje na temat tego, czy poprawnie interpretuję ich wyniki.1 1 1
Byłbym również bardzo zainteresowany najgorszym przypadkiem w miejscu stabilnego szybkiego sortowania. Z tego, co rozumiem, modyfikowanie szybkiego sortowania jako najgorszego przypadku wymaga wybrania odpowiedniego elementu przestawnego, który zniszczyłby stabilność, która normalnie cieszyłaby się.O ( n ln n )
Jest to czysto teoretyczne i nie mam praktycznego zastosowania. Chciałbym tylko poznać algorytm, który ma wszystkie trzy z tych funkcji.