Algoritmo di ordinamento Bubble Sort - Linguaggio C
Gli algoritmi di ordinamento nel linguaggio C vengono utilizzati per ordinare una serie di elementi all'interno di un array, solitamente numeri.
L'ordinamento può essere in ordine crescente, ovvero con i numeri ordinati dal più piccolo al più grande, oppure decrescente, ovvero con i numeri ordinati dal più grande al più piccolo.
L'ordinamento permette di gestire con più facilità un insieme di elementi e l'algoritmo più diffuso (e forse anche uno dei migliori da imparare) è l'algoritmo Bubble Sort.
La logica di questo algoritmo è quella di confrontare ogni elemento di un array (partendo dalla posizione 0), con il valore dell'elemento successivo, poi a seconda dell'ordinamento che si vuole realizzare tra decrescente e crescente, viene inserito in ultima posizione sempre l'elemento più piccolo della lista (decrescente) o più grande (crescente).
Ovviamente l'ultima posizione viene decrementata ogni volta che si arriva a posizionare un valore nell'ultima posizione di un array, altrimenti si sovrascrive continuamente l'ultimo elemento e non avviene alcun ordinamento!
Ecco un piccolo esempio per capire la logica di questo algoritmo di ordinamento bubblesort crescente:
CITAZIONE
ho il vettore vet[3] = {6,4,3,8}
Confronto vet[0] con vet[1] // 6 > 4 quindi inverto i due numeri nell'array e ottengo vet[3] = {4,6,3,8}
Confronto vet[1] con vet[2] // 6 > 3 quindi inverto i due numeri nell'array e ottengo vet[3] = {4,3,6,8}
Confronto vet[2] con vet[3] // 6 < 8 quindi i due numeri rimangono invariati nell'array.
Ora si decrementa l'ultima posizione, infatti non è più 3 dove è presente il valore 8, ma è 2 dove si presenta il valore 6 (questo perchè in ogni caso siamo già sicuri che l'elemento in ultima posizione è il numero maggiore della lista, invece il numero 6 è ordinato solo in questo caso).
Confronto vet[0] con vet[1] // 4 > 3 quindi inverto i due numeri nell'array e ottengo vet[3] = {3,4,6,8}
Confronto vet[1] con vet[2] // 3 < 6 quindi i due numeri rimangono invariati nell'array = {3,4,6,8}
Decremento l'ultima posizione e diventa 1.
Confronto vet[0] con vet[1] // 3 < 4 quindi i numeri rimangono invariati nell'array = {3,4,6,8}
Output: 3-4-6-8
Ora passiamo al codice, in questi due esempi vi mostrerò come realizzare un Bubble Sort crescente e uno decrescente
Ordinamento Bubble Sort crescente:
Last comments