Algoritmo di Berger: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m sezione vuota
Blakwolf (discussione | contributi)
Riga 4:
 
==Caratteristiche dell'algoritmo==
L'algoritmo calcola ''n''/2 accoppiamenti di tutte le ''n''(''n''-1)/2 partite del girone di andata di un campionato di ''n'' squadre, per le'' n-1'' giornate, ed è valido solo per ''n'' pari.
{{...}}
 
* per ogni giornata ''g'' compresa tra 1 e ''n''-1
** per ogni partita ''i'' compresa tra 1 e ''n''/2
***la partita ''i'' è giocata da una qualsiasi coppia di squadre tali che:
***# non hanno mai giocato prima
***# le restanti squadre non ancora selezionate per giocare nella giornata ''g'' non hanno mai giocato nelle giornate precedenti
 
==Implementazioni==
===[[Java]]===
<source lang=java>
public void AlgoritmoDiBerger(String[] squadre){
int numero_squadre = squadre.length;
int giornate = numero_squadre - 1;
// crea gli array per le due liste in casa e fuori
String[] casa = new String[numero_squadre /2];
String[] trasferta = new String[numero_squadre /2];
for (int i = 0; i < numero_squadre /2; i++) {
casa [i] = squadre[i];
trasferta[i] = squadre[numero_squadre - 1 - i];
}
 
// Ruota in gli elementi delle liste, tenendo fisso il primo elemento
for (int i = 0; i < giornate; i++) {
// Salva l'elemento fisso
String pivot = casa [0];
 
/* sposta in avanti gli elementi di "trasferta" inserendo
all'inizio l'elemento casa[1] e salva l'elemento uscente in "riporto" */
String riporto = shiftRight(trasferta, casa [1]);
 
/* sposta a sinistra gli elementi di "casa" inserendo all'ultimo
posto l'elemento "riporto" */
shiftLeft(casa, riporto);
 
// ripristina l'elemento fisso
a[0] = pivot ;
/* stampa le partite di questa giornata */
System.out.console().printf("%d^ Giornata\n",i+1);
for (int j = 0; j < numero_squadre /2 ; j++) {
System.out.console().printf("%d %s - %s\n", j, casa[j], trasferta[j]);
}
}
}
 
</source>
 
==Note==