I programmatori che passano dallo sviluppo di PC e Web alla codifica per dispositivi mobili o sistemi integrati scoprono che si impiega più tempo a selezionare e codificare le proprie strutture dati e algoritmi. Con meno memoria e memoria di dati limitata, non c'è spazio per librerie o framework predefiniti. Quindi, per coloro che hanno bisogno di scrivere le proprie routine di ordinamento, ecco alcune considerazioni sulla scelta dell'ordinamento a bolle basse.

sfondo

L'ordinamento a bolle è un semplice algoritmo che ordina un elenco di elementi in memoria. Dato un array, il codice confronta ripetutamente ogni coppia di elementi adiacenti e li scambia se non sono in ordine. Il processo si ripete fino a quando non si verificano più scambi. Se fosse possibile visualizzare l'array mentre è in corso l'ordinamento, i valori bassi si "bolla" verso l'alto mentre i valori grandi affonderebbero verso il basso. Ecco il codice rilevante in Visual Basic 2010:

While swap = True swap = False Per i = 0 A tbl.length - 2 Se tbl (i)> tbl (i + 1) Quindi tmp = tbl (i) tbl (i) = tbl (i + 1) tbl (i + 1) = tmp swap = True End se Next End While

Quando scegliere l'ordinamento bolle

Questo algoritmo ha diversi vantaggi. È semplice da scrivere, facile da capire e richiede solo poche righe di codice. I dati sono ordinati in posizione, quindi c'è poco overhead di memoria e, una volta ordinati, i dati sono in memoria, pronti per l'elaborazione. Il principale svantaggio è il tempo necessario per ordinare. Il tempo medio aumenta in modo quasi esponenziale all'aumentare del numero di elementi della tabella. Dieci volte il numero di articoli impiega quasi cento volte il tempo necessario per ordinare.

Altri tipi di array

Gli algoritmi di ordinamento variano in complessità, velocità e costi generali. L'ordinamento delle bolle è il meno complesso ma anche uno dei più lenti. Altri ordinamenti basati su array come l'ordinamento di inserzione e l'ordinamento di scambio sono un po 'più veloci ma richiedono più codice (vedere i riferimenti seguenti). Il vantaggio principale degli ordinamenti basati su array è che usano il minimo codice e occupano la minima quantità di memoria di lavoro. Considerare questi tipi per array semplici con meno di qualche centinaio di elementi.

Algoritmi di ordinamento complessi

Set di dati più grandi richiedono codice più complesso e più memoria. L'ordinamento rapido e l'heap ordinano sia la divisione che la copia dei set di dati per ottimizzare il numero di confronti. L'ordinamento rapido divide continuamente l'elenco, quindi lo riassembla in ordine ordinato. L'ordinamento heap copia i dati in una struttura ad albero, quindi attraversa l'albero per copiare nuovamente i dati in ordine. Entrambi sono veloci ed efficienti ma richiedono più codice e molta più memoria di lavoro. Scegli questi algoritmi per grandi set di dati.