import java.util.*; public class QuickSorter { static final int FASTEST = 0; /* ohne zuruecklegen */ static final int NETWORK_CARD = 1; /* ohne zuruecklegen */ static final int REMAINING_BW = 2; /* mit zureucklegen */ static final int REMAINING_CPU = 3; /* mit zuruecklegen */ static final int OPERATOR = 7; /* sortiert operatorList nach opId */ private static ArrayList a; private static ArrayList aOp; public static void sortFastest(ArrayList a0) { if(a0.size() == 0) return; a=a0; quicksort(0, a.size()-1, FASTEST); } public static void sortCard(ArrayList a0) { if(a0.size() == 0) return; a=a0; quicksort(0, a.size()-1, NETWORK_CARD); } public static void sortRemainingBw(ArrayList a0) { if(a0.size() == 0) return; a=a0; quicksort(0, a.size()-1, REMAINING_BW); } public static void sortRemainingCPU(ArrayList a0) { if(a0.size() == 0) return; a=a0; quicksort(0, a.size()-1, REMAINING_CPU); } public static void sortOpId(ArrayList a0) { if(a0.size() == 0) return; aOp=a0; quicksortOp(0, aOp.size()-1, OPERATOR); } private static void quicksort (int lo, int hi, int mode) { int i=lo, j=hi; int middle = (lo+hi)/2; Proc x = (Proc)a.get(middle); // Aufteilung while (i<=j) { switch(mode) { case FASTEST: while (compareFastest((Proc)a.get(i),x)<0) i++; while (compareFastest((Proc)a.get(j),x)>0) j--; break; case NETWORK_CARD: while (compareCard((Proc)a.get(i),x)<0) i++; while (compareCard((Proc)a.get(j),x)>0) j--; break; case REMAINING_BW: while (compareRemainingBw((Proc)a.get(i),x)<0) i++; while (compareRemainingBw((Proc)a.get(j),x)>0) j--; break; case REMAINING_CPU: while (compareRemainingCPU((Proc)a.get(i),x)<0) i++; while (compareRemainingCPU((Proc)a.get(j),x)>0) j--; break; } if (i<=j) { exchange(i, j); i++; j--; } } // Rekursion if (lo0) j--; if (i<=j) { exchangeOp(i, j); i++; j--; } } // Rekursion if (lo