update meta data
This commit is contained in:
parent
f3a896c724
commit
90e15ed6ce
3307 changed files with 1674 additions and 7 deletions
37
Task/Sorting-algorithms-Merge-sort/00DESCRIPTION
Normal file
37
Task/Sorting-algorithms-Merge-sort/00DESCRIPTION
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
{{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.
|
||||
|
||||
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 functions in pseudocode look like this:
|
||||
'''function''' ''mergesort''(m)
|
||||
'''var''' list left, right, result
|
||||
'''if''' length(m) ≤ 1
|
||||
'''return''' m
|
||||
'''else'''
|
||||
'''var''' middle = length(m) / 2
|
||||
'''for each''' x '''in''' m '''up to''' middle - 1
|
||||
'''add''' x '''to''' left
|
||||
'''for each''' x '''in''' m '''at and after''' middle
|
||||
'''add''' x '''to''' right
|
||||
left = mergesort(left)
|
||||
right = mergesort(right)
|
||||
'''if''' last(left) ≤ first(right)
|
||||
'''append''' right '''to''' left
|
||||
'''return''' left
|
||||
result = merge(left, right)
|
||||
'''return''' result
|
||||
|
||||
'''function''' ''merge''(left,right)
|
||||
'''var''' list result
|
||||
'''while''' length(left) > 0 and length(right) > 0
|
||||
'''if''' first(left) ≤ first(right)
|
||||
'''append''' first(left) '''to''' result
|
||||
left = rest(left)
|
||||
'''else'''
|
||||
'''append''' first(right) '''to''' result
|
||||
right = rest(right)
|
||||
'''if''' length(left) > 0
|
||||
'''append''' rest(left) '''to''' result
|
||||
'''if''' length(right) > 0
|
||||
'''append''' rest(right) '''to''' result
|
||||
'''return''' result
|
||||
|
||||
For more information see [[wp:Merge_sort|Wikipedia]]
|
||||
Loading…
Add table
Add a link
Reference in a new issue