code: from __future__ import print_function
  from random import randint
  from tempfile import TemporaryFile
  import numpy as np
  import math
  
  
  def _inPlaceQuickSort(A, start, end):
      count = 0
      if start < end:
          pivot = randint(start, end)
          temp = A[end]
          A[end] = A[pivot]
          A[pivot] = temp
  
          p, count = _inPlacePartition(A, start, end)
          count += _inPlaceQuickSort(A, start, p - 1)
          count += _inPlaceQuickSort(A, p + 1, end)
      return count
  
  
  def _inPlacePartition(A, start, end):
  
      count = 0
      pivot = randint(start, end)
      temp = A[end]
      A[end] = A[pivot]
      A[pivot] = temp
      newPivotIndex = start - 1
      for index in range(start, end):
  
          count += 1
          if A[index] < A[end]:  # check if current val is less than pivot value
              newPivotIndex = newPivotIndex + 1
              temp = A[newPivotIndex]
              A[newPivotIndex] = A[index]
              A[index] = temp
  
      temp = A[newPivotIndex + 1]
      A[newPivotIndex + 1] = A[end]
      A[end] = temp
      return newPivotIndex + 1, count
  
  
  outfile = TemporaryFile()
  p = 100  # 1000 elements are to be sorted
  
  
  mu, sigma = 0, 1  # mean and standard deviation
  X = np.random.normal(mu, sigma, p)
  np.save(outfile, X)
  print("The array is")
  print(X)
  
  
  outfile.seek(0)  # using the same array
  M = np.load(outfile)
  r = len(M) - 1
  z = _inPlaceQuickSort(M, 0, r)
  
  print(
      "No of Comparisons for 100 elements selected from a standard normal distribution is :"
  )
  print(z)
  
apis: numpy.random.normal numpy.save numpy.load