All pastes #1030267 Raw Edit

Mine

public java v1 · immutable
#1030267 ·published 2008-05-26 19:10 UTC
rendered paste body
import 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();	  }}