home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.disi.unige.it
/
2015-02-11.ftp.disi.unige.it.tar
/
ftp.disi.unige.it
/
pub
/
.person
/
CataniaB
/
teach-act
/
esempi
/
Ordinamenti
/
selSort.c
< prev
Wrap
C/C++ Source or Header
|
1999-05-13
|
944b
|
41 lines
/* selection sort - vedi dispense pag. 23 */
#include <stdio.h>
#include <stdlib.h>
#define MAX 6
int main()
{
float *a,aux;
int n,k,imin,i;
printf("Quanti numeri (max %d)? ",MAX);
scanf("%d",&n);
/* legge e memorizza in a */
n = n <= MAX ? n : MAX; /* fidarsi e' bene, non fidarsi ... */
a = (float*) malloc(sizeof(float)*n);
printf("Inserire %d numeri: ",n);
for(k = 0;k < n;k++) scanf("%f",&a[k]);
/* ordina a */
for (k = 0;k < n-1;k++)
{
/* cerca il minimo in a tra k e n-1 */
imin = k;
for (i = k+1;i < n;i++) /* invariante: a[min]<=a[p] per k<=p<i */
if (a[i] < a[imin]) imin = i;
/* scambio a[k] con a[imin] */
aux = a[k];
a[k] = a[imin];
a[imin] = aux;
/* invariante: a e` ordinato da 0 a k-1 e a[k-1]<=a[p] per k<=p<n-1 */
}
/* stampa il risultato */
printf("\nRisultato:\n");
for(k = 0;k < n & k < MAX;k++) printf("%f\n",a[k]);
}