Merge Sort is a good introduction to divide & conquer.
The Big O of Merge Sort Algorithm is O(nlog(n)).
The divide & conquer Paradigm
1. Divide into small subproblems
2. Conquer via recursive calls
3. Combine solutions of subproblems into one for the original problem
python code:
def merge(l, r):
final = []
while l and r:
if l[0] <= r[0]:
final.append(l.pop(0)) # add the smaller integer into the new list and delete it from the original list which is similar
else: # to the pointer operation of C/C++
final.append(r.pop(0))
return final+l+r
def mergeSort(List): #recursive function
if len(List) <= 1:
return List #The last layer of recursion tree whose element is a single integer
else:
mid = int(len(List)/2)
sorted_left = mergeSort(List[:mid]) #split the whole list of integers into left part and right part
sorted_right = mergeSort(List[mid:])
return merge(sorted_left, sorted_right) #merge function which is to merge the two parts each of which has already sorted
if __name__ == '__main__':
f = open('IntegerArray.txt')
number = []
_number = list(f)
for n in _number:
number.append(int(n))
result = mergeSort(number)
print(result)