本文共 4099 字,大约阅读时间需要 13 分钟。
- package lhz.algorithm.chapter.two;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- * 本文地址:
-
- public class MergeSort {
-
- private static int[] input = new int[] { 2, 1, 5, 4, 9, 8, 6, 7, 10, 3 };
-
-
-
-
- public static void main(String[] args) {
- mergeSort(input);
-
- printArray();
- }
-
-
-
-
-
-
- private static int[] mergeSort(int[] array) {
-
- if (array.length > 1) {
- int leftLength = array.length / 2;
- int rightLength = array.length - leftLength;
-
- int[] left = new int[leftLength];
- int[] right = new int[rightLength];
-
- for (int i=0; i<leftLength; i++) {
- left[i] = array[i];
- }
- for (int i=0; i<rightLength; i++) {
- right[i] = array[leftLength+i];
- }
-
- left = mergeSort(left);
- right = mergeSort(right);
-
- int i = 0;
- int j = 0;
- for (int k=0; k<array.length; k++) {
-
- if (i == leftLength && j < rightLength) {
- array[k] = right[j];
- j++;
-
- } else if (i < leftLength && j == rightLength) {
- array[k] = left[i];
- i++;
-
- } else if (i < leftLength && j < rightLength) {
- if (left[i] > right[j]) {
- array[k] = right[j];
- j++;
- } else {
- array[k] = left[i];
- i++;
- }
- }
- }
- }
- return array;
-
-
-
-
-
-
-
-
-
-
-
- }
-
- private static void printArray() {
- for (int i : input) {
- System.out.print(i + " ");
- }
- }
- }
本文转自mushiqianmeng 51CTO博客,原文链接:http://blog.51cto.com/mushiqianmeng/730242,如需转载请自行联系原作者