import Prog1Tools.IOTools;
public class Partition2{
  public static void main(String[] args) {
  int [] feld;
  int i, j, x, n, temp;
  int zzAlt, zzNeu, a, c, m;

  // Initialisierung des Zufallszahlengenerators
  System.out.println("Initialisierung des ZZ-Generators");
  zzAlt = IOTools.readInteger("Bitte den Seed eingeben: ");
  a = IOTools.readInteger("Bitte a eingeben: ");
  c = IOTools.readInteger("Bitte c eingeben: ");
  m = IOTools.readInteger("Bitte m eingeben: ");
  System.out.println();

  // Initialisierung des Feldes
  n = IOTools.readInteger("Bitte die Feldgroesse eingeben: ");
  feld = new int[n];
  for (i=0; i<feld.length; i++) {
    zzNeu = ((a * zzAlt) + c) % m;
    // Achtung! Werden nur pos. Zahlen gewuenscht, dann folg. einkommentieren:
    if (zzNeu < 0)
      zzNeu = (zzNeu + m);
    zzAlt=zzNeu;
    feld[i]=zzNeu;
  }
  System.out.println();

  // Ausgabe
  for (i=0; i<feld.length; i++) 
    System.out.print(feld[i] + "  ");
  System.out.println();

  // Partition
  i = 0;
  j = feld.length - 1;
  
  x = feld[(i + j)/2];
  System.out.println("Pivotelement: " + x);
  do {
    while (feld[i] < x) 
      i++;    // Suche von links her
    while (feld[j] > x)
      j--;    // Suche von rechts her
    if (i <=j) {
      temp = feld[i];
      feld[i] = feld[j];
      feld[j] = temp;
      i++;
      j--;
    } 
  } while (i <= j); 
  System.out.println("Indexueberschneidung bei i = " + i + " und j = " + j);
 
  // Ausgabe
  for (i=0; i<feld.length; i++) 
    System.out.print(feld[i] + "  ");
  System.out.println();
  return;
  }
}