QUICKSORT 2 test case passed but one not please correct my code

import java.util.*;
public class Main {
int partition(int arr[], int low, int high)
{
int pivot = arr[high];
int i = (low-1);
for (int j=low; j<high; j++)
{

        if (arr[j] < pivot) 
        { 
            i++; 

            int temp = arr[i]; 
            arr[i] = arr[j]; 
            arr[j] = temp; 
        } 
    } 

    int temp = arr[i+1]; 
    arr[i+1] = arr[high]; 
    arr[high] = temp; 

    return i+1; 
} 
void sort(int arr[], int low, int high) 
{ 
    if (low < high) 
    { 

        int pi = partition(arr, low, high); 
        sort(arr, low, pi-1); 
        sort(arr, pi+1, high); 
    } 
}  
static void printArray(int arr[]) 
{ 
    int n = arr.length; 
    for (int i=0; i<n; ++i) 
        System.out.print(arr[i] + " "); 
    System.out.println(); 
} 
public static void main(String args[]) {
   Scanner scn = new Scanner(System.in);
	     int n = scn.nextInt();
         int[] arr=new int[n];
            for(int i=0;i<n;i++){
                 arr[i]=scn.nextInt();
        }
    Main ob = new Main(); 
    ob.sort(arr, 0, arr.length-1); 
    printArray(arr);
}

}

you have to use randomized quick sort…you are making the last element as the pivot…chose any random element as the pivot…worst case complexity of qs is n^2

i tried but not succeeded can u correct my code here

you are not using randomized quicksort…you can make use of Math.random function()

share your code with randomized qs if you are not able to solve

I hope I’ve cleared your doubt. I ask you to please rate your experience here
Your feedback is very important. It helps us improve our platform and hence provide you
the learning experience you deserve.

On the off chance, you still have some questions or not find the answers satisfactory, you may reopen
the doubt.