def partition(nums, low, high):
pivot = nums[high]
i = low-1
for j in range(low, high):
if nums[j]<=pivot:
i+=1
nums[i],nums[j]=nums[j],nums[i]
nums[i+1],nums[high]=nums[high],nums[i+1]
return i+1
def quick_sort(nums, low, high):
if low<high:
pi = partition(nums, low, high)
quick_sort(nums, low, pi-1)
quick_sort(nums, pi+1,high)
nums = [10,7,8,9,1,5]
quick_sort(nums,0,len(nums)-1)
print(nums)
def merge(nums, low, mid, high):
for i in range(low, high+1):
temp[i]=nums[i]
i,j=low,mid+1
for p in range(low,high+1):
if i==mid+1:
nums[p]=temp[j]
j+1
elif j==high+1:
nums[p]=temp[i]
i+=1
elif temp[i]>temp[j]:
nums[p]=temp[j]
j+=1
else:
nums[p]=temp[i]
i+=1
def merge_sort(nums, low, high):
if low<high:
mid=low+(high-low)//2
merge_sort(nums,low,mid)
merge_sort(nums,mid+1,high)
merge(nums,low,mid,high)
nums=[10,7,8,9,1,5]
temp = [0]*(len(nums))
merge_sort(nums,0,len(nums)-1)
print(nums)