首页 > 代码库 > mergeSort
mergeSort
1 package POJ; 2 3 public class Main { 4 5 /** 6 * 7 * MergeSort 8 * 9 */10 public static void main(String[] args) {11 Main so = new Main();12 int[] list = { 6, 4, 2, 3, 1, 5, 10, 4, 9, 8, 11, 7 };13 int[] result = so.mergeSort(list);14 for (int a : result)15 System.out.println(a);16 }17 18 public int[] mergeSort(int[] list) {19 int[] helper = new int[list.length];20 mergeSort(list, helper, 0, list.length - 1);21 return list;22 }23 24 private void mergeSort(int[] list, int[] helper, int low, int high) {25 // TODO Auto-generated method stub26 if (low < high) {27 int mid = (high + low) / 2;28 mergeSort(list, helper, low, mid);29 mergeSort(list, helper, mid + 1, high);30 merge(list, helper, low, mid, high);31 }32 }33 34 private void merge(int[] list, int[] helper, int low, int mid, int high) {35 // TODO Auto-generated method stub36 for (int i = low; i <= high; i++) {37 helper[i] = list[i];38 }39 int helperLeft = low;40 int helperRight = mid + 1;41 int current = low;42 while (helperLeft <= mid && helperRight <= high) {43 if (helper[helperLeft] <= helper[helperRight]) {44 list[current] = helper[helperLeft];45 helperLeft++;46 } else {47 list[current] = helper[helperRight];48 helperRight++;49 }50 current++;51 }52 int remaining = mid - helperLeft;53 for (int i = 0; i <= remaining; i++) {54 list[current + i] = helper[helperLeft + i];55 }56 }57 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。