ArrayIndexBound Error

Hi,

I am get ArrayIndexofBound Error while running the below quick sort. I would appreciate your help

import java.util.*;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);

	int n = sc.nextInt();
	
	int arr[] =  new int[n];
	
	for(int i=0; i<n;i++) {
		arr[i] = sc.nextInt();
	}
	
	sort(arr, 0, n-1);
	
	for (int i=0; i<n; ++i) 
        System.out.print(arr[i]+" "); 
}

static void sort(int arr[], int l,int h ) {
	
	if(l<h) {
		
		int pi = partition(arr,l,h);
		
		sort(arr, l, pi-1);
		sort(arr, pi+1, h);
	}
}

static int partition(int[] arr, int l, int h ) {
	
		int pivot = arr[h];
		int i = l-1;
		for(int j =0 ; j< h; j++) {
			
			if(arr[j]<=pivot) {
				i++;
				int temp = arr[i];
				arr[i] = arr[j];
				arr[j] = temp;
			}
			
		}	//Swap Pivot
			
			int temp = arr[i+1];
			arr[i+1] = arr[h];
			arr[h] = temp;
		
	return i+1;
	
}

}