def Merge_Sort_Merge (List, First, Middle, Last):
NewList = [0]*(Last - First)
List1Counter = First
List2Counter = Middle+1
NewListCounter = 0
Counter = 0
while (List1Counter <= Middle and List2Counter <= Last):
if List[List1Counter] < List[List2Counter]:
NewList[Counter] = List[List1Counter]
List1Counter += 1
else:
NewList[Counter] = List[List2Counter]
List2Counter += 1
Counter += 1
while (List1Counter <= Middle):
NewList[Counter] = List[List1Counter]
List1Counter += 1
Counter += 1
while (List2Counter <= Last):
NewList[Counter] = List[List2Counter]
List2Counter += 1
Counter += 1
Counter = 0
List1Counter = First
while (List1Counter <= Last):
List[List1Counter] = NewList[Counter]
Counter += 1
List1Counter += 1
def Merge_Sort (List, First, Last):
if First < Last:
Middle = (First + Last) / 2
Merge_Sort(List, First, Middle)
Merge_Sort(List, Middle+1, Last)
Merge_Sort_Merge(List, First, Middle, Last)
def Main():
import random
List = []
for x in range(100):
List.append(random.randint(1,1000))
print List
Merge_Sort(List, 0, 99)
print List |