code: import numpy as np
  
  
  def partition(arr, low, high):
      i = (low-1)         # index of smaller element
      pivot = arr[high]     # pivot
  
      for j in range(low, high):
  
          # If current element is smaller than the pivot
          if arr[j] < pivot:
  
              # increment index of smaller element
              i = i+1
              arr[i], arr[j] = arr[j], arr[i]
  
      arr[i+1], arr[high] = arr[high], arr[i+1]
      return (i + 1)
  
  
  def quickSort(arr, low, high):
      if low < high:
  
          # pi is partitioning index, arr[p] is now
          # at right place
          pi = partition(arr, low, high)
  
          # Separately sort elements before
          # partition and after partition
          quickSort(arr, low, pi-1)
          quickSort(arr, pi + 1, high)
  
   # Driver code to test above
  # arr = [10, 7, 8, 9, 1, 5]
  arr = np.random.randint(0, 1000000, 200000)
  n = len(arr)
  quickSort(arr, 0, n-1)
  # print(f"Sorted array is: {arr}")
  
apis: numpy.random.randint