Repository where I mostly put random python scripts.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

60 lines
1.5 KiB

# coding: utf-8
# In[1]:
#Merge Slot Without Slicing
#start is the index of the first item
#end is the index past the the last item
def indexMergeSort(alist, start = None, end = None):
if start == None:
start = 0
if end == None:
end = len(alist)
#note that the print operations still use slicing for convenience
#print("Input: ",alist[start:end])
length = end - start
if length > 1:
#print("Splitting ",alist[start:end])
mid = start + length//2
indexMergeSort(alist, start, mid)
indexMergeSort(alist, mid, end)
i=start # index for the left part of the list
j=mid # index for the right part of the list
#we use a temporary list
templist = [None] * (length)
k = 0 #index for the temp list
while i < mid and j < end:
if alist[i] < alist[j]:
templist[k] = alist[i]
i=i+1
else:
#we swap
templist[k] = alist[j]
j=j+1
k=k+1
while i < mid:
templist[k] = alist[i]
i=i+1
k=k+1
while j < end:
templist[k]=alist[j]
j=j+1
k=k+1
#we copy the results
for k in range(length):
alist[start+k] = templist[k]
#print("Merging ",alist[start:mid], alist[mid:end])
alist = [54,26,93,17,77,31,44,55,20]
indexMergeSort(alist)
print(alist)