In un corso di algoritmi standard ci viene insegnato che quicksort è in media e nel peggiore dei casi. Allo stesso tempo, vengono studiati altri algoritmi di ordinamento che sono nel peggiore dei casi (come mergesort e heapsort ), e persino il tempo lineare nel migliore dei casi (come bubblesort …
Esistono due metodi di partizione quicksort menzionati in Cormen: Hoare-Partition(A, p, r) x = A[p] i = p - 1 j = r + 1 while true repeat j = j - 1 until A[j] <= x repeat i = i + 1 until A[i] >= x if i < …
Mi sono imbattuto in molti algoritmi di smistamento durante i miei studi alle superiori. Tuttavia, non so mai quale sia il più veloce (per una matrice casuale di numeri interi). Quindi le mie domande sono: Qual è l'algoritmo di ordinamento più veloce attualmente conosciuto? Teoricamente, è possibile che ce ne …
Ho appena iniziato a seguire un corso su Strutture di dati e algoritmi e il mio assistente di insegnamento ci ha fornito il seguente pseudo-codice per ordinare una matrice di numeri interi: void F3() { for (int i = 1; i < n; i++) { if (A[i-1] > A[i]) { …
Ho problemi a trovare buone risorse che danno il peggior caso in atto algoritmo di ordinamento stabile . Qualcuno sa di buone risorse?O ( n lnn )O(nlnn)O(n \ln n) Solo un promemoria, sul posto significa che utilizza l'array passato e che l'algoritmo di ordinamento è autorizzato a utilizzare solo spazio …
Mi chiedo se esiste un modo standard per misurare la "ordinamento" di un array? Un array che ha il numero medio di possibili inversioni sarebbe considerato al massimo indifferenziato? Con ciò voglio dire che è sostanzialmente il più lontano possibile dall'essere ordinati o in ordine inverso.
Quale sarebbe il modo più veloce per farlo (dal punto di vista algoritmico, oltre che pratico)? Stavo pensando qualcosa secondo le seguenti linee. Potrei aggiungere alla fine di un array e quindi usare bubblesort in quanto ha un caso migliore (array totalmente ordinato all'inizio) che è vicino a questo e …
È scritto su Wikipedia che "... l'ordinamento di selezione supera quasi sempre l'ordinamento a bolle e l'ordinamento di gnomi". Qualcuno può spiegarmi perché la selezione è considerata più veloce di quella a bolle anche se entrambi hanno: Peggior complessità del caso :O ( n2)O(n2)\mathcal O(n^2) Numero di confronti : O …
Ho un set di coppie. Ogni coppia ha la forma (x, y) in modo tale che x, y appartengano a numeri interi dell'intervallo [0,n). Quindi, se n è 4, allora ho le seguenti coppie: (0,1) (0,2) (0,3) (1,2) (1,3) (2,3) Ho già le coppie. Ora, devo costruire una combinazione usando …
Sto cercando un algoritmo per distribuire i valori da un elenco in modo che l'elenco risultante sia il più "bilanciato" o "uniformemente distribuito" possibile (tra virgolette perché non sono sicuro che questi siano i modi migliori per descriverlo ... in seguito fornirò un modo per misurare se un risultato è …
Un numero sorprendente di problemi ha riduzioni abbastanza naturali della programmazione lineare (LP). Vedi il capitolo 7 di [1] per esempi come flussi di rete, abbinamento bipartito, giochi a somma zero, percorsi più brevi, una forma di regressione lineare e persino valutazione del circuito! Poiché la valutazione del circuito si …
Nell'ordinamento radix ordiniamo prima per cifra meno significativa, quindi ordiniamo per seconda cifra meno significativa e così via e finiamo con un elenco ordinato. Ora, se abbiamo un elenco di numeri, abbiamo bisogno di bit per distinguere tra quei numeri. Quindi il numero di passaggi di ordinamento radix che facciamo …
Sul sito Web Algorithms di ordinamento viene fatta la seguente richiesta: L'algoritmo di ordinamento ideale avrebbe le seguenti proprietà: Stabile: le chiavi uguali non vengono riordinate. Funziona in posizione, richiedendo spazio extra.O ( 1 )O(1)O(1) Confronti chiave peggiore dei casi .O ( n ⋅ lg( n ) )O(n⋅lg(n))O(n\cdot\lg(n)) swap nel …
Trova il numero minimo di confronti necessari per ordinare (ordinare) cinque elementi e escogitare un algoritmo che ordina questi elementi usando questo numero di confronti. Soluzione : ce ne sono 5! = 120 possibili esiti. Pertanto, un albero binario per la procedura di ordinamento avrà almeno 7 livelli. In effetti, …
Gli algoritmi di ordinamento generici generalmente richiedono un set di dati per l'ordinamento e una funzione di confronto che può confrontare due singoli elementi. Se il comparatore è una relazione d'ordine¹, l'output dell'algoritmo è un elenco / array ordinato. Mi chiedo però quali algoritmi di ordinamento funzionerebbero effettivamente con un …
L'ordinamento Radix è teoricamente molto veloce quando sai che le chiavi si trovano in un certo intervallo limitato, ad esempio valori nell'intervallo . Se converti semplicemente i valori in base che richiede tempo , esegui un ordinamento base radix e poi converti nuovamente nella base originale per un algoritmo globale …
Sto cercando un algoritmo di ordinamento per array int che non alloca alcun byte diverso dalle dimensioni dell'array ed è limitato a due istruzioni: SWAP: scambia l'indice successivo con quello attuale; SPOSTA: sposta il cursore sull'indice +1 o -1; Cioè, non è possibile scambiare indici non vicini, né scambiare l'indice …
Considera il seguente problema: Input: due matrici e di lunghezza , dove è in ordine.AAABBBnnnBBB Domanda: do e contengono gli stessi elementi (con la loro molteplicità)?AAABBB Qual è l' algoritmo deterministico più veloce per questo problema? Può essere risolto più velocemente di ordinarli? Questo problema può essere risolto in un …
Come posso ordinare un elenco di 5 numeri interi in modo tale che nel peggiore dei casi ci vogliono 7 confronti? Non mi importa di quante altre operazioni vengono eseguite. Non so nulla di particolare sugli interi. Ho provato alcuni approcci di divisione e conquista diversi che mi portano a …
L'ordinamento rapido randomizzato è un'estensione dell'ordinamento rapido in cui l'elemento pivot viene scelto in modo casuale. Quale può essere la peggiore complessità temporale di questo algoritmo. Secondo me, dovrebbe essere O (n2)O(n2)O(n^2) , poiché il caso peggiore si verifica quando il perno scelto casualmente viene selezionato in ordine ordinato o …
Nel loro libro Randomized Algorithms , Motwani e Raghavan aprono l'introduzione con una descrizione della loro funzione RandQS - Randomized quicksort - dove il perno, usato per dividere il set in due parti, viene scelto a caso. Da un po 'di tempo mi sto rompendo il cervello (per certi versi …
L'algoritmo di ordinamento rapido può essere suddiviso nei seguenti passaggi Identificare pivot. Partiziona l'elenco collegato in base al pivot. Dividi ricorsivamente l'elenco collegato in 2 parti. Ora, se scelgo sempre l'ultimo elemento come pivot, l'identificazione dell'elemento pivot (primo passaggio) richiede tempo.O(n)O(n)\mathcal O(n) Dopo aver identificato l'elemento pivot, possiamo memorizzare i …
L'anno scorso stavo leggendo un fantastico articolo su "Meccanica quantistica per la scuola materna" . Non è stata una carta facile. Ora, mi chiedo come spiegare quicksort con le parole più semplici possibili. Come posso provare (o almeno fare un'onda) che la complessità media è e quali sono i casi …
Assumi due elenchi di elementi comparabili: u e s. Sia INV (u) il numero di inversioni in u. Sto cercando un algoritmo efficiente per inserire gli elementi di s in te con un aumento minimo di INV (u). Fondamentalmente vorrei inserire oggetti in un elenco mantenendolo "il più ordinato possibile" …
Un elenco -item può essere verificato come ordinato confrontando ogni articolo con il suo vicino. Nella mia applicazione, non sarò in grado di confrontare ogni elemento con il suo vicino: invece, i confronti a volte saranno tra elementi distanti. Dato che l'elenco contiene più di tre elementi e anche che …
È possibile utilizzare un algoritmo di ordinamento con un confronto non transitivo e, in caso affermativo, perché la transitività è elencata come requisito per i comparatori di ordinamento? Sfondo: Un algoritmo di ordinamento in genere ordina gli elementi di un elenco secondo una funzione di confronto C (x, y), con …
Dato un tubo con palline numerate (casuali). Il tubo ha fori per rimuovere una palla. Considerare i seguenti passaggi per un'operazione: Puoi scegliere una o più palline dai fori e ricordare l'ordine in cui le hai raccolte. È necessario inclinare il tubo verso il lato sinistro in modo che le …
Dato un array AAA di NNN numeri interi, ogni elemento dell'array può essere aumentato di un numero fisso bbb con una certa probabilità p[i]p[i]p[i] , 0≤i<n0≤i<n0 \leq i < n . Devo trovare il numero previsto di swap che avranno luogo per ordinare l'array usando il bubble sort . Ho …
Quindi unire l'ordinamento è un algoritmo di divisione e conquista. Mentre stavo guardando il diagramma sopra, stavo pensando se fosse possibile bypassare sostanzialmente tutti i passaggi di divisione. Se si scorreva sull'array originale mentre si saltava di due, è possibile ottenere gli elementi nell'indice i e i + 1 e …
Considerando questo pseudo-codice di un bubblesort: FOR i := 0 TO arraylength(list) STEP 1 switched := false FOR j := 0 TO arraylength(list)-(i+1) STEP 1 IF list[j] > list[j + 1] THEN switch(list,j,j+1) switched := true ENDIF NEXT IF switched = false THEN break ENDIF NEXT Quali sarebbero le idee …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.