1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
public class 归并算法 {
public static void main(String[] args) { // TODO Auto-generated method stub int[]A= {5,3,1,7,2,9,4}; int[]temp=new int[A.length]; MergeSort(A, temp, 0, A.length-1); System.out.println("result:"); for (int i = 0; i < A.length; i++) { System.out.println(A[i]+","); } } public static void MergeSort(int[]A,int[]temp,int left,int right) { int mid=(left+right)/2; if (right<=left) return; MergeSort(A, temp, left, mid); MergeSort(A, temp, mid+1, right); Merge(A,temp,left,mid,right); } public static void Merge(int[]A,int[]temp,int left,int mid,int right){ int i=left,j=mid+1; for (int k = left; k<=right;k++) { temp[k]=A[k]; } for (int k = left; k <=right; k++) { if(i>mid) A[k]=temp[j++]; else if(j>right) A[k]=temp[i++]; else if(i>mid) A[k]=temp[j++]; else if (temp[i]<temp[j])A[k]=temp[i++]; else A[k]=temp[j++]; } }
}
|
近期评论