Skip to content
Advertisement

Index 16 out of bounds for length 16

I am trying to sort an array of x elements using quickSort but I am getting an error “Index 16 out of bounds for length 16” please help.

public class quickSort {
    static int partition(int []arr, int lo, int hi){
        int pivot=arr[lo];
        while(lo<hi){
            while(pivot<arr[hi] && lo<hi)
                hi = hi - 1;
                if (hi != lo) {
                    arr[lo] = arr[hi];
                    lo = lo + 1;
                }
            while(arr[lo]<pivot && lo<hi)
                lo =lo+1;
                if(hi!=lo){
                    arr[hi]=arr[lo];
                    hi =hi-1;
                }
        }
        arr[hi] =pivot;
        int pivotPoint = partition(arr,lo,hi);
        return pivotPoint;
    }
    static void quickSort(int[] arr, int lo, int hi){
        int pivotPoint =partition(arr,lo,hi);
        if(lo<pivotPoint){
            quickSort(arr,lo,pivotPoint-1);
        }
        if(lo<pivotPoint){
            quickSort(arr,pivotPoint+1,hi);
        }
    }
    static void Sort(int[] arr, int n){
        quickSort(arr,1,n);
    }
    public static void main(String[] args) {
        int[] random ={16,9,8,10,11,12,13,14,15,16,2,3,6,7,4,5};
        Sort(random,random.length);
        System.out.println();
    }
}

Advertisement

Answer

For an array of 16 elements the indexes are 0 to 15. Thus index 16 is not part of the array and you get the OutOfBoundsException.

Advertisement