[Well..]Merge Sort implementation
2015-04-07 11:47
357 查看
//Code from: https://www.cs.cmu.edu/~adamchik/15-121/lectures/Sorting%20Algorithms/code/MergeSort.java import java.util.*; public class MergerSort { public static void main(String[] args) { Integer[] a = {2, 6, 3, 5, 1}; mergeSort(a); System.out.println(Arrays.toString(a)); } public static void mergeSort(Comparable [ ] a) { Comparable[] tmp = new Comparable[a.length]; mergeSort(a, tmp, 0, a.length - 1); } private static void mergeSort(Comparable [ ] a, Comparable [ ] tmp, int left, int right) { if( left < right ) { int center = (left + right) / 2; mergeSort(a, tmp, left, center); mergeSort(a, tmp, center + 1, right); merge(a, tmp, left, center + 1, right); } } private static void merge(Comparable[ ] a, Comparable[ ] tmp, int left, int right, int rightEnd ) { int leftEnd = right - 1; int k = left; int num = rightEnd - left + 1; while(left <= leftEnd && right <= rightEnd) if(a[left].compareTo(a[right]) <= 0) tmp[k++] = a[left++]; else tmp[k++] = a[right++]; while(left <= leftEnd) // Copy rest of first half tmp[k++] = a[left++]; while(right <= rightEnd) // Copy rest of right half tmp[k++] = a[right++]; // Copy tmp back for(int i = 0; i < num; i++, rightEnd--) a[rightEnd] = tmp[rightEnd]; } }
相关文章推荐
- MergeSort Implementation with C
- An Implementation of Merge Sort in C
- Algorithmic Implementation series(3) Implementation of Merge_Sort
- 归并排序(merge-sort)
- 归并排序(Merge Sort)
- Hive 基础之:分区、桶、Sort Merge Bucket Join
- 一个关于Sort_merge_passes的说明!
- MapReduce:详解Shuffle(copy,sort,merge)过程
- 深入理解Oracle表(3):三大表连接方式详解之Nested loop join和 Sort merge join
- 2路归并排序(MERGE_SORT)
- Mergesort
- Insertion Sort and Merge Sort
- oracle表连接------>排序合并连接(Merge Sort Join)
- merge_sort2 do not use the sentinels (recursive)
- Collections.sort in JDK6:MergeSort
- SPOJ3370(Mergesort)
- Inversion count implemented with merge sort
- 归并排序(merge sort)
- Nested loops, Hash join and Sort Merge joins – difference?
- 第七章 ALDS1_5_B:Merge Sort 归并排序