Funzioni utilizzate per effettuare l'ordinamento dei vettori:
//Scambia punti
void ScambiaPunti(punto *p1, punto *p2){
punto q;
q = *p1;
*p1 = *p2;
*p2 = q;
return;
}
//Ordina punti
void OrdinaPunti(punto v[],int n){
int k,j;
punto q;
for(k = 0; k < n-1; k++){
if(v[k].dista > v[k+1].dista){
for(j = k+1; j > 0; j--){
if(v[j].dista>=v[j-1].dista)break;
ScambiaPunti(&v[j],&v[j-1]);
}
}
}
return;
}
//Ordina vettore
void OrdinaVet(double numbers[], int N){
double scambio;
for(int i = 0; i < N-1; i++){
for(int j = i+1; j < N; j++){
if(numbers[i] > numbers[j]){
scambio = numbers[i];
numbers[i]= numbers[j];
numbers[j]= scambio;
}
}
}
return;
}
//Simplesort
void simple(int NMAX, double n[]){
for(int j = 0; j < NMAX; j++){
for(int r = j+1; r < NMAX; r++){
if(n[r] < n[j]){
scambia(&n[r], &n[j]);
}
}
}
}
//Quicksort
void quick( int NMAX, double v[]) {
int i, j;
double separator;
if (NMAX<2 i="" return="">2>
separator = v[NMAX/2];
i=0;
j=NMAX-1;
while (j>i) {
while ( v[i]
while ( v[j]>separator ) j--;
if (i
scambia( &v[i], &v[j] );
i++;
}
}
quick(i,v);
quick(NMAX-i,v+i);
}
//Bubblesort
void bubble( int NMAX, double v[]) {
for( int i=0; i
if ( v[i]>v[i+1] ) {
for (int j=i+1; j>0; j--) {
if (v[j]
else break;
}
}
}
}
Categories:
Programmi
Posta un commento