归并排序 java

来源:互联网 发布:第一装甲师 知乎 编辑:程序博客网 时间:2024/06/13 03:50
package MergeSort;/** * 归并排序 * @author root * */public class MergeSort {static int[] data = {0,2,4,5,3,1,7,6};public static void main(String[] args) {// TODO Auto-generated method stubsort(data, 1, data.length-1);print(data);}//二路归并算法public static void sort(int[] data, int low, int high){if(low<high){int mid = (low+high)/2;sort(data, low, mid);sort(data, mid+1, high);merge(data, low, mid, high);}}//归并两个数组,将data中data[i]-data[m]和data[m+1]-data[n]归并到targetpublic static void merge(int[] data, int low, int mid, int high){if(low==high){return;}int[] target = new int[high-low+1];int i=low;int j=mid+1;int k=0;while(i<=mid && j<=high){if(data[i]<=data[j]){target[k++] = data[i++];}else{target[k++] = data[j++];}}while(i<=mid){target[k++] = data[i++];}while(j<=high){target[k++] = data[j++];}for(i=0,j=low; i<target.length; i++,j++){data[j]=target[i];}}public static void print(int[] data){for(int i=1; i<data.length; i++){System.out.print(data[i]);}System.out.println();}}

0 0