rendered paste bodyimport java . awt .*;import java . awt . event .*;import java.util.Date;public class sort extends Frame{ static final int H_SIZE = 400; static final int V_SIZE = 500; static int[] results = new int[12]; public sort() { super("Sortieren"); setSize (H_SIZE , V_SIZE ); // set windows size setVisible ( true ); addWindowListener ( new WindowAdapter () { public void windowClosing ( WindowEvent e) { System.exit(0); } }); } public void paint ( Graphics g ) { g. setColor ( Color . black ); g. drawLine (10 , 50 , 10 , 380) ; g. drawLine (10 , 50 , 0 , 60);g. drawLine (10 , 50 , 20 , 60) ; g. drawLine (10 , 380 , 450 , 380) ; g. drawLine (450 , 380 , 440 , 370);g. drawLine (450 , 380 , 440 , 390); g. drawString ( "Merge", 100, 90 ); g. drawString ( "Sort.", 25, 360 - results[0] ); g. drawString ( ""+results[0], 25, 375 - results[0] ); g. drawString ( "Unsort.", 55, 360 - results[1] ); g. drawString ( ""+results[1], 55, 375 - results[1] ); g. drawString ( "teilw.", 95, 360 - results[2] ); g. drawString ( ""+results[2], 95, 375 - results[2] ); g. drawString ( "zufall", 135, 360 - results[3] ); g. drawString ( ""+results[3], 135, 375 - results[3] ); g. fillRect (20 , 380 - results[0], 10, results[0]); g. fillRect (60 , 380 - results[1], 10, results[1]); g. fillRect (100 , 380 - results[2], 10, results[2]); g. fillRect (140 , 380 - results[3], 10, results[3]); g. drawString ( "Quicksort", 220, 90 ); g. drawString ( "Sort.", 175, 360 - results[4] ); g. drawString ( ""+results[4], 175, 375 - results[4] ); g. drawString ( "Unsort.", 205, 360 - results[5] ); g. drawString ( ""+results[5], 205, 375 - results[5] ); g. drawString ( "teilw.", 245, 360 - results[6] ); g. drawString ( ""+results[6], 245, 375 - results[6] ); g. drawString ( "zufall", 285, 360 - results[7] ); g. drawString ( ""+results[7], 285, 375 - results[7] ); g. fillRect (170 , 380 - results[4], 10, results[4]); g. fillRect (210 , 380 - results[5], 10, results[5]); g. fillRect (250 , 380 - results[6], 10, results[6]); g. fillRect (290 , 380 - results[7], 10, results[7]); g. drawString ( "Quicksort (zufllig)", 340, 90 ); g. drawString ( "Sort.", 325, 360 - results[8] ); g. drawString ( ""+results[8], 325, 375 - results[8] ); g. drawString ( "Unsort.", 355, 360 - results[9] ); g. drawString ( ""+results[9], 355, 375 - results[9] ); g. drawString ( "teilw.", 395, 360 - results[10] ); g. drawString ( ""+results[10], 395, 375 - results[10] ); g. drawString ( "zufall", 435, 360 - results[11] ); g. drawString ( ""+results[11], 435, 375 - results[11] ); g. fillRect (320 , 380 - results[8], 10, results[8]); g. fillRect (360 , 380 - results[9], 10, results[9]); g. fillRect (400 , 380 - results[10], 10, results[10]); g. fillRect (440 , 380 - results[11], 10, results[11]); } static void mergesort(int a[], int left, int right) { if(left == right) //abbruch Bedingung (falls es nur noch ein Element) return; int length = right-left+1; //Lnge mergesort(a, left, (left+right) / 2); //rekursiver aufruf mergesort(a, (left+right) / 2+1, right); //rekursiver aufruf int s[] = new int[length]; for(int i = 0; i < length; i++) //kopiere alle elemente in s s[i] = a[left+i]; int m1 = 0; int m2 = (left+right) / 2 -left+1; for(int i = 0; i < length; i++) { //zusammen fassen if(m2 <= right-left) // if(m1 <= (left+right) / 2-left) if(s[m1] > s[m2]) a[i+left] = s[m2++]; else a[i+left] = s[m1++]; else a[i+left] = s[m2++]; else a[i+left] = s[m1++]; } } public static void quicksort(int[] a, int left, int right){ int i = left; int j = right-1; int x = a[right]; // Pivotelement do { while(a[i] <= x && i < right){ i ++; } while(x <= a[j] && j > left){ j --; } if (i < j){ int temp = a[i];a[i] = a[j]; a[j] = temp; } } while (i < j); // alle Elemente der linken Haelfte sind kleiner // als alle Elemente der rechten Haelfte if (a[i] > x){ int temp = a[i];a[i] = a[right]; a[right] = temp; } } public static void quicksortrand(int[] a, int left, int right){ int i = left; int j = right-1; int x = a[(int)(left+Math.random() * (right - left))]; // Pivotelement do { while(a[i] <= x && i < right){ i ++; } while(x <= a[j] && j > left){ j --; } if (i < j){ int temp = a[i];a[i] = a[j]; a[j] = temp; } } while (i < j); // alle Elemente der linken Haelfte sind kleiner // als alle Elemente der rechten Haelfte if (a[i] > x){ int temp = a[i];a[i] = a[right]; a[right] = temp; } } public static void main(String[] args){ int n = 500000; int sort[] = new int[n]; int umgesort[] = new int[n]; int fastsort[] = new int[n]; int random[] = new int[n]; for (int i = 0; i < n; i++) sort[i] = i; for (int i = 0; i < n; i++) umgesort[n - 1 - i] = i; int x = (int) (Math.random() * n); for (int i = 0; i < x; i++) fastsort[i] = i; fastsort[x] = -1; for (int i = x+1; i < n; i++) fastsort[i] = i; for (int i = 0; i < n; i++) random[i] = (int) (Math.random() * n); Date start, end; start = new Date(); mergesort(sort,0,n-1);end = new Date(); results[0] = (int)(end.getTime()- start.getTime()); start = new Date();mergesort(umgesort,0,n-1);end = new Date(); results[1] = (int)(end.getTime()- start.getTime()); start = new Date();mergesort(fastsort,0,n-1);end = new Date(); results[2] = (int)(end.getTime()- start.getTime()); start = new Date();mergesort(random,0,n-1);end = new Date(); results[3] = (int)(end.getTime()- start.getTime()); for (int i = 0; i < n; i++) sort[i] = i; for (int i = 0; i < n; i++) umgesort[n - 1 - i] = i; x = (int) (Math.random() * n); for (int i = 0; i < x; i++) fastsort[i] = i; fastsort[x] = -1; for (int i = x+1; i < n; i++) fastsort[i] = i; for (int i = 0; i < n; i++) random[i] = (int) (Math.random() * n); start = new Date(); quicksort(sort,0,n-1);end = new Date(); results[4] = (int)(end.getTime()- start.getTime()); start = new Date();quicksort(umgesort,0,n-1);end = new Date(); results[5] = (int)(end.getTime()- start.getTime()); start = new Date();quicksort(fastsort,0,n-1);end = new Date(); results[6] = (int)(end.getTime()- start.getTime()); start = new Date();quicksort(random,0,n-1);end = new Date(); results[7] = (int)(end.getTime()- start.getTime()); for (int i = 0; i < n; i++) sort[i] = i; for (int i = 0; i < n; i++) umgesort[n - 1 - i] = i; x = (int) (Math.random() * n); for (int i = 0; i < x; i++) fastsort[i] = i; fastsort[x] = -1; for (int i = x+1; i < n; i++) fastsort[i] = i; for (int i = 0; i < n; i++) random[i] = (int) (Math.random() * n); start = new Date(); quicksortrand(sort,0,n-1);end = new Date(); results[8] = (int)(end.getTime()- start.getTime()); start = new Date();quicksortrand(umgesort,0,n-1);end = new Date(); results[9] = (int)(end.getTime()- start.getTime()); start = new Date();quicksortrand(fastsort,0,n-1);end = new Date(); results[10] = (int)(end.getTime()- start.getTime()); start = new Date();quicksortrand(random,0,n-1);end = new Date(); results[11] = (int)(end.getTime()- start.getTime()); new sort(); }}