java实现归并排序

public class MergeSort {

	public static void merge(int[] arr, int left, int mid, int right) {
		int temp[] = new int[arr.length];

		int p1 = left;
		int p2 = mid + 1;
		int k = left;

		while (p1 <= mid && p2 <= right) {
			if (arr[p1] < arr[p2]) {
				temp[k++] = arr[p1++];
			} else {
				temp[k++] = arr[p2++];
			}
		}

		while (p1 <= mid) {
			temp[k++] = arr[p1++];
		}

		while (p2 <= right) {
			temp[k++] = arr[p2++];
		}

		for (int i = left; i <= right; i++)
			arr[i] = temp[i];

	}

	public static void mergeSort(int arr[], int start, int end) {
		if (start < end) {
			int mid = (start + end) / 2;
			mergeSort(arr, start, mid);
			mergeSort(arr, mid + 1, end);
			merge(arr, start, mid, end);
		}
	}

	public static void main(String[] args) {
		//int[] arr = { 6, 1, 2, 7, 9, 3, 4, 5, 10, 8 };
		//System.out.println(Arrays.toString(arr));
		int arr[] = new int[1000000];
		for(int i = arr.length-1;i>=0;i--){
			arr[i] = i+1000000;
		}
		System.out.println(new Date());
		mergeSort(arr, 0, arr.length - 1);
		//System.out.println(Arrays.toString(arr));
		System.out.println(new Date());
	}
}

 

你可能感兴趣的:(常用排序算法)