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="">
  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: