Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void mergeSort(int[] unsorted) {
- int[] copy = new int[unsorted.length];
- for (int size=1; size<unsorted.length; size*=2) {
- for (int i=0; i<unsorted.length; i+=2*size) {
- merge(unsorted, copy, i, i+size, i+2*size);
- }
- }
- }
- public static void merge(int[] unsorted, int[] copy, int low, int mid, int high) {
- if (mid >= unsorted.length) {
- return;
- }
- if (high > unsorted.length) {
- high = unsorted.length;
- }
- int i = low, j = mid;
- for (int k = low; k < high; k++) {
- if (i == mid) {
- copy[k] = unsorted[j++];
- }
- else if (j == high) {
- copy[k] = unsorted[i++];
- }
- else if (unsorted[j] < unsorted[i]) {
- copy[k] = unsorted[j++];
- }
- else {
- copy[k] = unsorted[i++];
- }
- }
- for (int k = low; k < high; k++)
- {
- unsorted[k] = copy[k];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement