天天看點

排序 歸并排序+快排

import java.util.Arrays;

import org.stringtemplate.v4.compiler.STParser.template_return;

public class GuibingSort {
    public static int[]sort(int[] array,int low,int high){
        int mid = (low+high)/;
        if(low<high){
            sort(array, low, mid);
            sort(array, mid+, high);
            merge(array, low, mid, high);
        }
        return array;
    }
    private static void merge(int[] array, int low, int mid, int high) {
        int i=low;int m=mid;
        int j=mid+;int n=high;
        int k=;
        int[] tmp = new int[high-low+]; 
        while(i<=m && j<=n){
            if(array[i]<array[j]){
                tmp[k++]=array[i++];
            }else{
                tmp[k++]=array[j++];
            }
        }
        while(i<=m){
            tmp[k++]=array[i++];
        }
        while(j<=n){
            tmp[k++]=array[j++];
        }
        for(int h=;h<tmp.length;h++){
            array[h+low]=tmp[h];
        }

    }
    public static void  QuickSort(int[] array,int low,int high){

        int l=low;int h=high;int flag=array[low];
        while(l<h){
            while(l<h && array[h]>=flag){
                h--;
            }
            if(l<h){
                int tmp=array[h];
                array[h]=array[l];
                array[l]=tmp;
                l++;
            }
            while(l<h && array[l]<=flag){
                l++;
            }
            if(l<h){
                int tmp=array[h];
                array[h]=array[l];
                array[l]=tmp;
                h--;
            }

        }

        if(l>low) QuickSort(array, low, l-);
        if(h<high) QuickSort(array, l+, high);

    }
    // 歸并排序的實作
    public static void main(String[] args) {

        int[] array = { , , , , , , , , ,  };
//      int[] temp = new int[array.length];
//      GuibingSort.sort(array, 0, array.length - 1);
        QuickSort(array, , array.length-);
        System.out.println(Arrays.toString(array));
    }
}
           

繼續閱讀