Java归并排序

来源:互联网 发布:50 seo 编辑:程序博客网 时间:2024/05/01 11:48
import java.util.Comparator;import java.util.Random;public class MergeSort {public static void main(String[] args) {Integer[] a = new Integer[100];for (int i = 0; i < a.length; i++) {a[i] = new Random().nextInt(200);}MergeSort.mergeSort(a, new Integer[100], 0, a.length - 1,new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1 < o2 ? -1 : (o1 == o2 ? 0 : 1);}});for (int i = 0; i < a.length; i++) {System.out.print(a[i] + " ");}}public static <Elem> void mergeSort(Elem[] A, Elem[] temp, int left,int right, Comparator<? super Elem> c) {if (left == right)return;int mid = (left + right) / 2;mergeSort(A, temp, left, mid, c);mergeSort(A, temp, mid + 1, right, c);for (int i = left; i <= right; i++) {// copy subarray to temptemp[i] = A[i];}// Do the merge operation back to Aint i1 = left;int i2 = mid + 1;for (int curr = left; curr <= right; curr++) {if (i1 == mid + 1) {A[curr] = temp[i2++];} else if (i2 > right) {A[curr] = temp[i1++];} else if (c.compare(temp[i1], temp[i2]) < 0) {A[curr] = temp[i1++];} else {A[curr] = temp[i2++];}}}}


0 0
原创粉丝点击