Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Algoritmo esempio di bubble sort c, Esercizi di Elementi di Informatica

Algoritmo bubble sort scritto in c

Tipologia: Esercizi

2019/2020

Caricato il 23/03/2020

giuseppe-valente-2
giuseppe-valente-2 🇮🇹

3

(2)

20 documenti

1 / 4

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Ordinamento di un vettore
Supponiamo di avere un vettore, ad es. di numeri interi, e di volerlo ordinare in ordine
crescente, cioè dall'elemento più piccolo al più grande. Questo significa che, se per esempio il
contenuto iniziale del vettore è:
dopo l'ordinamento il nuovo contenuto sarà:
Vi sono molti metodi per ordinare un vettore Due fra gli algoritmi più semplici sono:
Selection Sort
Bubble Sort
Selection Sort
L'idea è la seguente: si trova l'elemento minimo (quello col valore più piccolo di tutti) e lo si
sposta nell'elemento zero (il primo elemento) del vettore, scambiandolo di posto con
quest'ultimo:
A questo punto l'elemento zero è sistemato (contiene già il valore più piccolo). Si procede
quindi a una nuova ricerca del minimo sugli elementi restanti (dall'1 alla fine del vettore).
Analogamente a quanto fatto prima, il nuovo minimo viene scambiato di posto con l'elemento
di posizione 1 (il secondo del vettore):
pf3
pf4

Anteprima parziale del testo

Scarica Algoritmo esempio di bubble sort c e più Esercizi in PDF di Elementi di Informatica solo su Docsity!

Ordinamento di un vettore

Supponiamo di avere un vettore, ad es. di numeri interi, e di volerlo ordinare in ordine crescente, cioè dall'elemento più piccolo al più grande. Questo significa che, se per esempio il contenuto iniziale del vettore è: dopo l'ordinamento il nuovo contenuto sarà: Vi sono molti metodi per ordinare un vettore Due fra gli algoritmi più semplici sono:  Selection Sort  Bubble Sort

Selection Sort

L'idea è la seguente: si trova l'elemento minimo (quello col valore più piccolo di tutti) e lo si sposta nell'elemento zero (il primo elemento) del vettore, scambiandolo di posto con quest'ultimo: A questo punto l'elemento zero è sistemato (contiene già il valore più piccolo). Si procede quindi a una nuova ricerca del minimo sugli elementi restanti (dall'1 alla fine del vettore). Analogamente a quanto fatto prima, il nuovo minimo viene scambiato di posto con l'elemento di posizione 1 (il secondo del vettore):

Il procedimento prosegue allo stesso modo fino alla fine del vettore. Per implementare l'algoritmo occorrono due cicli annidati (uno dentro l'altro) così ( n rappresenta il numero di elementi del vettore): for(i=0; i<n-1; i++) { min = i; for(j=i+1; j<n; j++) if(vet[j] < vet[min]) //cambiare questa condizione per invertire l'ordine min = j; temp=vet[min]; vet[min]=vet[i]; vet[i]=temp; } Si noti che il ciclo interno inizia da i+1 (cioè dall'elemento successivo all'ultimo elemento ordinato) e si limita a memorizzare la posizione dell'elemento minimo. Lo scambio viene fatto solo una volta che questa posizione è stata individuata (nel ciclo esterno). Il tempo di esecuzione di questo algoritmo cresce ovviamente al crescere delle dimensioni del vettore da ordinare. Cambiando la diseguaglianza indicata nel codice, l'ordinamento può essere facilmente invertito (dal più grande al più piccolo, decrescente).

Bubble Sort

Con questo secondo metodo, si confrontano gli elementi del vettore a due a due, partendo dall'ultimo (anzi, dal penultimo). Se si trovano due elementi in ordine "scorretto", essi vengono scambiati di posto. Per esempio nel nostro caso, la prima esecuzione del ciclo produrrà gli scambi seguenti:

aumentare la velocità dell'algoritmo fermandolo quando non ci sono più scambi (quando questa condizione si verifica, il vettore è ovviamente ordinato).