Ho tentato 2 implementazioni di bubblesort, la prima, funzionante, è la seguente:
#include <stdio.h>
int Dati[5];
void acquisisciNumeri(){
short i;
for(i=0; i<5; i++){
printf("scrivi un numero:");
scanf("%u", &Dati[i]);
}
}
void BubbleSort()
{
int passo,i,app, size;
size=5;
for(passo=1;passo<size;passo++)
{
for(i=0;i<size-passo;i++)
{
if(Dati[i]>Dati[i+1])
{
app=Dati[i];
Dati[i]=Dati[i+1];
Dati[i+1]=app;
}
}
}
}
void stampaRisultato(){
short i;
for (i=0; i<5; i++){
printf("%u", Dati[i]);
}
}
void main(){
acquisisciNumeri();
BubbleSort();
stampaRisultato();
system("PAUSE");
}
L'altra l'ho copiata da wikipedia, funziona parzialmente, ovvero ordina tutti i numeri tranne uno(il più alto) al posto del quale mette uno zero all'inizio dell'ordinamento. Inoltre in questo codice ci sono alcune cose che non mi sono chiare, intanto lo posto:
#include <stdio.h>
int Dati[5];
void acquisisciNumeri(){
short i;
for(i=0; i<5; i++){
printf("scrivi un numero:");
scanf("%u", &Dati[i]);
}
}
void BubbleSort()
{
int i, tmp, ultimo;
int alto=5;
while (alto >= 0)
{
ultimo = -1;
for (i=0; i<alto; i++)
{
if (Dati[i]>Dati[i+1])
{
tmp = Dati[i];
Dati[i] = Dati[i+1];
Dati[i+1] = tmp;
ultimo = i;
}
}
alto = ultimo;
}
}
void stampaRisultato(){
short i;
for (i=0; i<5; i++){
printf("%u", Dati[i]);
}
}
void main(){
acquisisciNumeri();
BubbleSort();
stampaRisultato();
system("PAUSE");
}
Non capisco l'uso delle variabili "alto" e "ultimo".