Advertisement
Gigli-0neiric

QS

Nov 25th, 2014
411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.49 KB | None | 0 0
  1.  
  2. public class Main {
  3.    
  4.     public static void main(String[] args) {
  5.        
  6.         int[] a1 = { 3, 2, 1 };
  7.         int[] a2 = { 9, 8, 7, 6, 5, 4,3, 2, 1 };
  8.         int[] a3 = { 2876, 53, 5345, 53, 78, 2, 9, 1, 3};
  9.         int[] a4 = { 2, 5, 1, 77, 23, 464, 5355, 21, 44, 656};
  10.         int[] a5 = { 6, 11, 18, 5, 99, 34, 12, 999, 98, 8, 44, 95, 244};
  11.        
  12.         Quicksort q = new Quicksort(a1);
  13.         System.out.println("------------------------------------------------------------------");
  14.         q = new Quicksort(a2);
  15.         System.out.println("------------------------------------------------------------------");
  16.         q = new Quicksort(a3);
  17.         System.out.println("------------------------------------------------------------------");
  18.         q = new Quicksort(a4);
  19.         System.out.println("------------------------------------------------------------------");
  20.         q = new Quicksort(a5);
  21.        
  22.    
  23.        
  24.     }
  25. }
  26.  
  27.  
  28. public class Quicksort {
  29.    
  30.     private int vergleiche = 0;
  31.     private int vertausche = 0;
  32.  
  33.    
  34.     public Quicksort(int[] t)
  35.     {
  36.         int linksPos = 0;
  37.         int rechtsPos = t.length - 1;
  38.        
  39.         arrayAusgeben(t);
  40.         quickSort(t, linksPos, rechtsPos);
  41.         arrayAusgeben(t);
  42.     }
  43.  
  44.     public void quickSort(int[] t, int linksPos, int rechtsPos) {
  45.        
  46.         if (linksPos < rechtsPos) {
  47.  
  48.             int key = t[(linksPos + (rechtsPos - linksPos) / 2)];
  49.             int ltemp = linksPos;
  50.             int rtemp = rechtsPos;
  51.  
  52.             do {   
  53.                 vergleiche++; // Erster Vergleich
  54.                 while (t[ltemp] < key)
  55.                 {
  56.                     ltemp++;
  57.                     vergleiche++; // Vergleicht nochmal, ob die Schleife verlassen werden darf.
  58.                 }
  59.                
  60.                 vergleiche++; // Erster Vergleich
  61.                 while (t[rtemp] > key)
  62.                 {
  63.                     rtemp--;
  64.                     vergleiche++; // Vergleicht nochmal, ob die Schleife verlassen werden darf.
  65.                 }
  66.  
  67.                 if (ltemp <= rtemp)
  68.                 {  
  69.                     int temp = t[ltemp];
  70.                     t[ltemp] = t[rtemp];
  71.                     t[rtemp] = temp;
  72.                     ltemp++;
  73.                     rtemp--;
  74.                     vertausche++;
  75.                 }
  76.  
  77.             } while (ltemp <= rtemp);
  78.  
  79.             if (linksPos < rtemp) {
  80.                 quickSort(t, linksPos, rtemp);
  81.             }
  82.  
  83.             if (rechtsPos > ltemp) {
  84.                 quickSort(t, ltemp, rechtsPos);
  85.             }
  86.            
  87.         }
  88.  
  89.     }
  90.    
  91.     public void arrayAusgeben(int[] array)
  92.     {
  93.         for (int i =0; i<array.length; i++)
  94.         {
  95.         System.out.print(array[i] + " ");
  96.         }
  97.         System.out.println();
  98.         double durchschnitt = vergleiche/((double)array.length);
  99.         System.out.println("Vergleiche: "+vergleiche+" Vergleiche für Elemente "+array.length+" Elemente. "+"(Durchscnitt: "+durchschnitt+")");
  100.         System.out.println("Durchgeführte Vertauschungen: "+vertausche);
  101.         System.out.println("");
  102.  
  103.     }
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement