/** * method realises the recursive algorithm with half division * * @param left left boundary of array * @param right right boundary of array */ private void doSortRecursiveHalfDivision(int left, int right) { int middle = tempArray[(left + right) / 2]; int i = left; int j = right; while (i <= j) { while (tempArray[i] < middle) { i++; } while (tempArray[j] > middle) { j--; } if (i <= j) { int temp = tempArray[i]; tempArray[i] = tempArray[j]; tempArray[j] = temp; i++; j--; } } if (left < j) { doSortRecursiveHalfDivision(left, j); } if (i < right) { doSortRecursiveHalfDivision(i, right); } }
/** * method initialises auxiliary array * * @param array gets an array for sorting */ private void sortRecursiveHalfDivision(int[] array) { this.tempArray = array; int left = 0; int right = array.length - 1; doSortRecursiveHalfDivision(left, right); }