[Algorytmika]Element osiowy w sortowaniu Quicksort
: 11 maja 2012, o 20:51
Witam.
Zaintrygował mnie pewien dylemat, który nie do końca wiem jak rozstrzygnąć. Mianowicie istnieje taki bardzo popularny algorytm sortowania - Quicksort. W dużym skrócie polega on na tym, że jeżeli mamy daną nieposortowaną tablicę elementów, dzielimy ją na dwie części wg. pewnego tzw. elementu osiowego, a następnie zastosowujemy (rekurencyjnie) Quicksort osobno do lewej i prawej części. Z tego co udało mi się wyczytać, elementem osiowym może być dowolny element od najbardziej lewego, do najbardziej prawego elementu tablicy (lub części tej tablicy). Zastanawia mnie jak to wpływa na szybkość tego algorytmu? Czy nie rozsądniej byłoby brać np. zawsze w połowie? Czy gdyby się trafiła seria wybranych skrajnych elementów osiowych (np. zawsze kolejne elementy: pierwszy, sortując na prawo od niego znów pierwszy, sortując na prawo od niego znów pierwszy... itd.) nie byłoby wolniej? Nigdzie nic nie jest napisane na ten temat, a sam nie wiem jak to sprawdzić/policzyć. Zatem naprawdę mnie to intryguje.
Zaintrygował mnie pewien dylemat, który nie do końca wiem jak rozstrzygnąć. Mianowicie istnieje taki bardzo popularny algorytm sortowania - Quicksort. W dużym skrócie polega on na tym, że jeżeli mamy daną nieposortowaną tablicę elementów, dzielimy ją na dwie części wg. pewnego tzw. elementu osiowego, a następnie zastosowujemy (rekurencyjnie) Quicksort osobno do lewej i prawej części. Z tego co udało mi się wyczytać, elementem osiowym może być dowolny element od najbardziej lewego, do najbardziej prawego elementu tablicy (lub części tej tablicy). Zastanawia mnie jak to wpływa na szybkość tego algorytmu? Czy nie rozsądniej byłoby brać np. zawsze w połowie? Czy gdyby się trafiła seria wybranych skrajnych elementów osiowych (np. zawsze kolejne elementy: pierwszy, sortując na prawo od niego znów pierwszy, sortując na prawo od niego znów pierwszy... itd.) nie byłoby wolniej? Nigdzie nic nie jest napisane na ten temat, a sam nie wiem jak to sprawdzić/policzyć. Zatem naprawdę mnie to intryguje.