Java---高速ソートとバブルソートの比較


高速ソートとバブルソートの比較


テストの結果、急速なソートサイクル回数は明らかに泡のソートより多くのくだらない話を少なくして、直接コードに行きます
public class BubbleCompareQuick {

    int array[] = { 49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 5, 4, 62, 99, 98, 54, 56, 17, 18, 23, 34, 15, 35,25, 53, 51 };

    int recycleTime = 0;

    StringBuilder sb=new StringBuilder();

    // 
    @Test
    public void testQuick() {

        quickSort(array, 0, array.length-1);
        System.out.println(" >>"+recycleTime);
        System.out.println("=========================");
        getResult(array);

    }

    // 
    @Test
    public void testBubble() {
        int tmp=0;
        for(int i=0;i<array.length;i++){
            for(int j=i;j<array.length;j++){
                if(array[i]>array[j]){
                    tmp=array[i];
                    array[i]=array[j];
                    array[j]=tmp;
                }
                recycleTime++;
            }
        }
        System.out.println(" >>"+recycleTime);
        System.out.println("=========================");
        getResult(array);

    }

    public void quickSort(int array[],int left,int right){
        if(leftint middle=getMiddle(array, left, right);
            quickSort(array, left, middle-1);
            quickSort(array, middle+1, right);
        }
    }
    public int getMiddle(int[] array,int left,int right){
        int tmp=array[left];
        while(leftwhile(leftarray[right]>=tmp){
                right--;
                recycleTime++;
            }
            array[left]=array[right];
            while(leftarray[left]<=tmp){
                left++;
                recycleTime++;
            }
            array[right]=array[left];
            recycleTime++;
        }
        array[left]=tmp;

        return left;

    }

    public  void getResult(int array[]){
        int len=sb.length();
        sb.delete(0, len);
        sb.append("[");
        for(int i=0;i<array.length;i++){
            sb.append(array[i]+",");
        }
        sb.deleteCharAt(sb.length()-1);
        sb.append("]");
        System.out.println(sb.toString());

    }
}

JunitでtestBubble()バブルソートを実行した結果:バブルソートサイクル>>406[4,5,12,13,15,17,18,23,25,27,34,34,35,38,49,49,51,53,54,56,62,64,65,76,78,97,98,99]
JunitでtestQuick()クイックソートを実行した結果:クイックソートサイクル>>149[4,5,12,13,15,17,18,23,25,27,34,34,35,38,49,49,51,53,54,56,62,64,65,76,78,97,98,99]
参照リンク:http://www.cnblogs.com/qqzy168/archive/2013/08/03/3219201.html