排序 归并排序+快排

来源:互联网 发布:淘宝买家售后申请退款 编辑:程序博客网 时间:2024/06/05 16:31
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)/2;        if(low<high){            sort(array, low, mid);            sort(array, mid+1, 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+1;int n=high;        int k=0;        int[] tmp = new int[high-low+1];         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=0;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-1);        if(h<high) QuickSort(array, l+1, high);    }    // 归并排序的实现    public static void main(String[] args) {        int[] array = { 2, 7, 8, 3, 1, 6, 9, 0, 5, 4 };//      int[] temp = new int[array.length];//      GuibingSort.sort(array, 0, array.length - 1);        QuickSort(array, 0, array.length-1);        System.out.println(Arrays.toString(array));    }}
原创粉丝点击