2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -1,11 +1,25 @@
|
|||
{{Sorting Algorithm}}[[Category:Recursion]]The '''merge sort''' is a recursive sort of order n*log(n).
|
||||
It is notable for having a worst case and average complexity of ''O(n*log(n))'', and a best case complexity of ''O(n)'' (for pre-sorted input).
|
||||
The basic idea is to split the collection into smaller groups by halving it until the groups only have one element or no elements (which are both entirely sorted groups).
|
||||
Then merge the groups back together so that their elements are in order.
|
||||
This is how the algorithm gets its "divide and conquer" description.
|
||||
{{Sorting Algorithm}}
|
||||
[[Category:Recursion]]
|
||||
|
||||
The '''merge sort''' is a recursive sort of order <big> n*log(n). </big>
|
||||
|
||||
It is notable for having a worst case and average complexity of <big> ''O(n*log(n))'', </big> and a best case complexity of <big> ''O(n)'' </big> (for pre-sorted input).
|
||||
|
||||
The basic idea is to split the collection into smaller groups by halving it until the groups only have one element or no elements (which are both entirely sorted groups).
|
||||
|
||||
Then merge the groups back together so that their elements are in order.
|
||||
|
||||
This is how the algorithm gets its ''divide and conquer'' description.
|
||||
|
||||
|
||||
;Task:
|
||||
Write a function to sort a collection of integers using the merge sort.
|
||||
The merge sort algorithm comes in two parts: a sort function and a merge function.
|
||||
|
||||
|
||||
The merge sort algorithm comes in two parts:
|
||||
a sort function and
|
||||
a merge function
|
||||
|
||||
The functions in pseudocode look like this:
|
||||
'''function''' ''mergesort''(m)
|
||||
'''var''' list left, right, result
|
||||
|
|
@ -40,6 +54,10 @@ The functions in pseudocode look like this:
|
|||
'''append''' rest(right) '''to''' result
|
||||
'''return''' result
|
||||
|
||||
For more information see [[wp:Merge_sort|Wikipedia]]
|
||||
|
||||
Note: better performance can be expected if, rather than recursing until length(m) ≤ 1, an insertion sort is used for length(m) smaller than some threshold larger than 1. However, this complicates example code, so is not shown here.
|
||||
;See also:
|
||||
* the Wikipedia entry: [[wp:Merge_sort| merge sort]]
|
||||
|
||||
|
||||
Note: better performance can be expected if, rather than recursing until <big> length(m) ≤ 1, </big> an insertion sort is used for <big> length(m) </big> smaller than some threshold larger than '''1'''. However, this complicates the example code, so it is not shown here.
|
||||
<br><br>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue