See More

package others; import java.util.Arrays; /** * ºÏ²¢ÅÅÐò,·Ö³ÉÈô¸É¸ö×ÓÐòÁÐ ¶Ô×ÓÐòÁÐÅÅÐò ×îºóÔٰѺϲ¢ºÃµÄºÏ²¢³ÉÒ»¸öÕûÌå * @author * */ public class MergeSort { public static void main(String[] args) { int[] input = {1,3,5,7,9,3,2,6}; sort(input,0,input.length-1); System.out.println(Arrays.toString(input)); } public static int[] sort(int[] input, int left, int right) { int middle = (left + right) / 2; if (left < right) { // ÖмäµÄ×ó±ß sort(input,left,middle); //ÖмäµÄÓÒ±ß sort(input,middle + 1,right); // ×óÓҺϲ¢ merge(input,left,middle,right); } return input; } public static void merge(int[] nums, int low, int mid, int high) { int[] temp = new int[high - low + 1]; int i = low;// ×óÖ¸Õë int j = mid + 1;// ÓÒÖ¸Õë int k = 0; // °Ñ½ÏСµÄÊýÏÈÒÆµ½ÐÂÊý×éÖÐ while (i <= mid && j <= high) { if (nums[i] < nums[j]) { temp[k++] = nums[i++]; } else { temp[k++] = nums[j++]; } } // °Ñ×ó±ßÊ£ÓàµÄÊýÒÆÈëÊý×é while (i <= mid) { temp[k++] = nums[i++]; } // °ÑÓұ߱ßÊ£ÓàµÄÊýÒÆÈëÊý×é while (j <= high) { temp[k++] = nums[j++]; } // °ÑÐÂÊý×éÖеÄÊý¸²¸ÇnumsÊý×é for (int k2 = 0; k2 < temp.length; k2++) { nums[k2 + low] = temp[k2]; } } }