input: Write a python function to implement quicksort.
  assert quicksort([10, 7, 8, 9, 1, 5], 0, 5) == [1, 5, 7, 8, 9, 10]
  assert quicksort([4, 2, 6, 9, 7], 0, 4) == [2, 4, 6, 7, 9]
  assert quicksort([3, 3, 3, 3, 3], 0, 4) == [3, 3, 3, 3, 3]
output: def quicksort(arr, low, high):
      if low < high:
          pi = partition(arr, low, high)
          quicksort(arr, low, pi - 1)
          quicksort(arr, pi + 1, high)
      return arr
  
  def partition(arr, low, high):
      pivot = arr[high]
      i = low - 1
      for j in range(low, high):
          if arr[j] <= pivot:
              i += 1
              arr[i], arr[j] = arr[j], arr[i]
      arr[i + 1], arr[high] = arr[high], arr[i + 1]
      return i + 1