Guest

charly

By: a guest on Jun 6th, 2008  |  syntax: Java  |  size: 1.34 KB  |  hits: 91  |  expires: Never
download  |  raw  |  embed  |  report abuse
Copied
  1. import java.util.Random;
  2. import java.lang.Math;
  3. import java.util.Arrays;
  4.  
  5. public class Test {
  6.         static void sort(int a[]) {
  7.                 quicksort(a,0,a.length-1);
  8.         }
  9.        
  10.         static void quicksort(int a[], int min, int max) {
  11.                 int minT=min, maxT=max;
  12.  
  13.                 if (minT>=maxT) return;
  14.  
  15.                 int mid=a[(minT+maxT)/2];
  16.                
  17.                 while (minT<maxT) {
  18.                         while (minT<maxT && a[minT]<mid)
  19.                                 minT++;
  20.                     while (minT<maxT && a[maxT]>mid)
  21.                                 maxT--;
  22.                        
  23.                     if (minT<maxT) {
  24.                                 int T=a[minT];
  25.                                 a[minT]=a[maxT];
  26.                                 a[maxT]=T;
  27.                     }
  28.                 }
  29.                
  30.                 if (maxT<minT) {
  31.                 int T=maxT;
  32.                 maxT=minT;
  33.                 minT=T;
  34.                 }
  35.                
  36.                 quicksort(a,min,minT);
  37.                 quicksort(a,minT==min?minT+1:minT,max);
  38.         }
  39.        
  40.         static String toString(int[] t) {
  41.                 StringBuilder sb=new StringBuilder("["+t[0]);
  42.                
  43.                 for(int i=1;i<t.length;i++)
  44.                         sb.append(", "+t[i]);
  45.                
  46.                 sb.append("]");
  47.                 return sb.toString();
  48.         }
  49.        
  50.         public static void main(String... args) {
  51.                 int[] tab=new int[5000];
  52.                 Random rand=new Random();
  53.                
  54.                 for(int i=0;i<5000;i++)
  55.                         tab[i]=rand.nextInt();
  56.                
  57.                 int[] tab2=tab.clone();
  58.                 long t0=System.currentTimeMillis();
  59.                 sort(tab);
  60.                 long t1=System.currentTimeMillis();
  61.                 Arrays.sort(tab2);
  62.                 long t2=System.currentTimeMillis();
  63.  
  64.                 System.out.println(toString(tab).equals(toString(tab2)));
  65.                 System.out.println(t1-t0);
  66.                 System.out.println(t2-t1);
  67.         }
  68. }