Ho problemi a trovare buone risorse che danno il peggior caso in atto algoritmo di ordinamento stabile . Qualcuno sa di buone risorse?
Solo un promemoria, sul posto significa che utilizza l'array passato e che l'algoritmo di ordinamento è autorizzato a utilizzare solo spazio aggiuntivo costante. Stabile significa che gli elementi con la stessa chiave appaiono nello stesso ordine nell'array ordinato come nell'originale.
Ad esempio, l'ordinamento unificato ingenuo è il caso peggiore e stabile ma utilizza spazio aggiuntivo. Quicksort standard può essere reso stabile, è presente ma nella peggiore delle ipotesi . Heapsort è a posto, nel peggiore dei casi ma non è stabile. Wikipedia ha un bel grafico di quali algoritmi di ordinamento hanno quali inconvenienti. Si noti che non esiste un algoritmo di ordinamento che elenca che abbia tutte e tre le condizioni di stabilità, nel caso peggiore e di essere in atto.O ( n ) O ( n 2 ) O ( n ln n )
Ho trovato un documento intitolato "Pratica sul posto sul posto" di Katajainen, Pasanen e Teuhola, che afferma di avere il caso peggiore in atto una variante stabile del mergesort. Se capisco correttamente i loro risultati, usano (bottom-up?) La fusione in modo ricorsivo sul primo dell'array e sul secondo dell'array e usano il secondo come spazio scratch per fare l'unione. Lo sto ancora leggendo, quindi vengono apprezzate ulteriori informazioni sull'interpretazione corretta dei loro risultati.1 1 1
Sarei anche molto interessato al peggiore dei casi sul posto di quicksort stabile. Da quello che ho capito, la modifica di quicksort in caso peggiore richiede la selezione di un perno adatto che distruggerebbe la stabilità che altrimenti godrebbe normalmente.O ( n ln n )
Questo è puramente di interesse teorico e non ho alcuna applicazione pratica. Vorrei solo sapere l'algoritmo che ha tutte e tre queste caratteristiche.