mirror of
https://github.com/TheAlgorithms/Python.git
synced 2024-11-30 16:31:08 +00:00
Merge pull request #65 from prateekiiest/patch-3
Create random_normaldistribution_quicksort.py
This commit is contained in:
commit
bbd96ecc18
66
sorts/random_normaldistribution_quicksort.py
Normal file
66
sorts/random_normaldistribution_quicksort.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
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)
|
Loading…
Reference in New Issue
Block a user