I need to use "maximum(int[] arr, int x, int y)" class (which finds maximum value in an integer array between from x to y) to get rid of temp in quicksort.
Briefly, during swap no temp element should be used.
my whole class is:
import java.util.Arrays;
public class qs {
//divide and conquer for max value in an array from x to y
static int maximum(int[] arr, int x, int y) {
if (y - x <= 1) {
return (Math.max(arr[x], arr[y]));
} else {
int max1 = maximum(arr, x, (x + y) / 2);
int max2 = maximum(arr, (x + y) / 2 + 1, y);
return Math.max(max1, max2);
}
}
static void quickSort(int[] arr, int l, int r){
int i = l; int j = r; int temp;
int a = arr[(l+r)/2];
while(i<=j){
while(arr[i] < a){
i++;
}
while(arr[j]>a){
j--;
}
if(i <= j){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
if(l<j){
quickSort(arr, l, j);
}
if(i<r){
quickSort(arr, i, r);
}
}
public static void main(String[] args) {
int[] arr = { 2, 17, -4, 42, 9, 26, 11, 3, 5, 28 };
quickSort(arr, 0, 9);
System.out.println("Quicksorted Array: " + Arrays.toString(arr));
}
}