1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | public class Main { public static void main(String[] args) { if (args.length == 0) { System.out .println("Proper Usage is: java main number1 number2 number3 ..."); System.exit(0); } Main main = new Main(); main.print(args); main.merge_sort(args, 0, args.length - 1); main.print(args); } public void print(String[] array) { print(array, 0, array.length - 1); } public void print(String[] array, int start, int end) { if (start > end || start < 0 || end > array.length - 1) return; for (int i = start; i <= end; i++) { System.out.print(array[i] + " "); } System.out.println(); } public void merge_sort(String[] array, int start, int end) { print(array, start, end); if (end == start) return; int mid = (start + end) / 2; merge_sort(array, start, mid); merge_sort(array, mid + 1, end); if (array[mid].compareTo(array[mid + 1]) <= 0) return; int i = start; int j = mid + 1; String[] arraycopy = new String[end - start + 1]; System.arraycopy(array, start, arraycopy, 0, end - start + 1); int index = start; while (i <= mid && j <= end) { if (arraycopy[i - start].compareTo(arraycopy[j - start]) > 0) { array[index++] = arraycopy[j++ - start]; } else { array[index++] = arraycopy[i++ - start]; } } while (i <= mid) array[index++] = arraycopy[i++ - start]; while (j <= end) array[index++] = arraycopy[j++ - start]; } } |
Wednesday, June 26, 2013
Merge Sort
Merge Sort. Using extra space to copy partially sorted array.
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment