Blog Informatica & Programmazione

Bacheca
Risorse Blog Facebook Like
Important Link:
Random link:




Iscriviti al gruppo Fan
Banner & Language Last Post
Forum Affiliati:
Traduci il forum nella lingua che preferisci:
 


  1. Algoritmo di ordinamento Bubble Sort - Linguaggio C

    Avatar
    Tags
    Algoritmi
    C
    By giratina23 il 8 July 2013
    17 Comments   77,892 Views
    .

    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:
    CODICE
    void bubblesort(int v[], in...

    Read the whole post...

    Last Post by Gio Boggio il 11 Mar. 2024
    .