Summarize time complexity of merge sort (#20632)
Add simple way to remember time complexity of merge sortpull/33888/head
parent
4b581c9cf8
commit
8d0ca1729d
|
@ -21,7 +21,7 @@ T(n) = 2T(n/2) + n
|
||||||
= n + n + ... + n + n + n
|
= n + n + ... + n + n + n
|
||||||
```
|
```
|
||||||
|
|
||||||
Counting the number of repetitions of n in the sum at the end, we see that there are lg n + 1 of them. Thus the running time is n(lg n + 1) = n lg n + n. We observe that n lg n + n < n lg n + n lg n = 2n lg n for n>0, so the running time is O(n lg n).
|
Counting the number of repetitions of n in the sum at the end, we see that there are lg n + 1 of them. Thus the running time is n(lg n + 1) = n lg n + n. We observe that n lg n + n < n lg n + n lg n = 2n lg n for n>0, so the running time is O(n lg n). Another simple way to remember the time complexity O(n lg n) of merge sort is that it takes roughly log<sub>2</sub><sup>n</sup> steps to split an array of size n to multiple arrays of size one. After each split, the algorithm have to merge 2 sorted arrays into one which can take n steps in total. As a result, the time complexity for merge sort is O(n lg n).
|
||||||
|
|
||||||
```Algorithm
|
```Algorithm
|
||||||
MergeSort(arr[], left, right):
|
MergeSort(arr[], left, right):
|
||||||
|
|
Loading…
Reference in New Issue