クイックソートバブルソート比較


// 
public class QuickSort {
    public static void quickSort(int[] a,int low,int high){
        int mid;
        int ltemp,rtemp;
        ltemp=low;rtemp=high;
        mid=a[(low+high)>>>1];
        while(ltemp<rtemp){// mid , mid 
            while(a[ltemp]<mid){
                ltemp++;
            }
            while(a[rtemp]>mid){
                rtemp--;
            }
            if(ltemp<rtemp){// 
                a[ltemp]=a[ltemp]^a[rtemp];
                a[rtemp]=a[ltemp]^a[rtemp];
                a[ltemp]=a[ltemp]^a[rtemp];
                ltemp++;rtemp--;
            }
        }
        if(ltemp==rtemp){
            ltemp++;
        }
        if(ltemp<high) quickSort(a,ltemp,high);
        if(low<rtemp) quickSort(a,low,rtemp);
    }
}
// 
public class Sort {
    public static void sort(int[] a){
        int j=0;
        for(int i=1;i<a.length;i++){// 
            
            j=i-1;
            while(j>=0&&a[j+1]<a[j]){// 

                a[j]=a[j+1]^a[j];a[j+1]=a[j+1]^a[j];a[j]=a[j+1]^a[j];// 
                j--;
            }

        }

    }

}
// 
class MyTimer{// 。
    private final long start;
    public MyTimer(){
        start=System.currentTimeMillis();
    }
    public long getElapsed(){
        return System.currentTimeMillis()-start;
    }
}

public class Test {
    // 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MyTimer t1=new MyTimer();
        for(int i=0;i<100;i++){// 
            int[]  a = new int[1000];
            for(int j=0;j<a.length-1;j++){
                a[j]=(int) (Math.random()*100);
            }
            QuickSort.quickSort(a,0,a.length-1);
        }
        System.out.println(t1.getElapsed());
        t1=new MyTimer();
        for(int i=0;i<100;i++){// 
            int[]  a = new int[1000];
            for(int j=0;j<a.length-1;j++){
                a[j]=(int) (Math.random()*100);
            }
            Sort.sort(a);
        }
        System.out.println(t1.getElapsed());
        t1=new MyTimer();
        for(int i=0;i<100;i++){// 
            int[]  a = new int[1000];
            for(int j=0;j<a.length-1;j++){
                a[j]=(int) (Math.random()*100);
            }
            java.util.Arrays.sort(a);
        }
        System.out.println(t1.getElapsed());
    }

}