rendered paste bodypublic class QuickSortInsertion{ public void quickSortInsertion(int array[]) { quickSortRec(array, 0, array.length-1); } private void quickSortRec(int array[], int left, int right) { if(right-left < 100) { insertSortIter(array, left, right); } else { int pivotIndex = partition(array, left, right); quickSortRec(array, left, pivotIndex-1); quickSortRec(array, pivotIndex+1, right); } } private int partition(int array[], int left, int right) { int pivot = array[left]; int limit = left; for (int i = left+1; i <= right; i++) { if (array[i] < pivot) { limit++; swap(array, limit, i); } } swap(array, left, limit); return limit; } private void insertSortIter(int[] array, int left, int right) { for(int i=left; i<=right; i++) { insert(array, i, right, array[i]); } } private void insert(int[] array, int left, int right, int value) { int i = right-1; while (i >= left && array[i] > value) { array[i+1] = array[i]; i--; } array[i+1] = value; } private void swap(int array[], int index1, int index2) { int temp = array[index1]; array[index1] = array[index2]; array[index2] = temp; }}