public class sort { public static int[] subarray(int[] a, int start, int n) { int[] s = new int[n]; for (int i=0; i= right.length // 2. Teil OK || (l < left.length // 1. Teil offen && left[l] <= right[r])) { elems[i] = left[l]; // vom 1. Teil l++; } else { elems[i] = right[r]; // vom 2. Teil r++; } } } public static void mergesort(int[] elems) { if (elems.length > 1) { int[] left = subarray(elems, 0, elems.length/2); mergesort(left); int[] right = subarray(elems,left.length,elems.length-left.length); mergesort(right); merge(left, right, elems); } } private static void quicksort(int[] elems) { quicksort1(elems,0,elems.length-1); } private static void quicksort1(int[] elems, int l, int r) { if (r-l>1) { int i = partition(elems, l, r); quicksort1(elems, l, i-1); quicksort1(elems, i, r); } } private static int partition(int[] elems, int l, int r) { int i = l; int j = r; int pivot = elems[(l+r)/2]; while (i <= j) { while (elems[i] < pivot) { i++; } while (pivot < elems[j]) { j--; } if (i <= j) { int h = elems[i]; elems[i] = elems[j]; elems[j] = h; i++; j--; } } return i; } // Aufruf mit z.B.: // java sort 38 27 43 3 9 82 10 public static void main(String [] args) { int[] elems = new int[args.length]; for (int i=0; i