排序算法:归并排序、并行归并排序及复杂度下界分析
1. 归并排序(Mergesort)
归并排序是分治法的典型应用。其基本思想是将未排序的序列分成大致相等的两部分,递归地对这两部分进行排序,然后将排好序的两部分合并成一个有序序列。
1.1 算法原理
- 分割 :将未排序的序列分成两个子序列。
- 递归排序 :对两个子序列分别进行递归排序。
- 合并 :将两个已排序的子序列合并成一个有序序列。
1.2 伪代码实现
Function mergeSort(⟨e1,...,en⟩) : Sequence of Element
if n = 1 then return ⟨e1⟩
else return merge(
mergeSort(⟨e1,...,e⌊n/2⌋⟩),
mergeSort(⟨e⌊n/2⌋+1,...,en⟩))
// merging two sequences represented as lists
Function merge(a,b : Sequence of Element) : Sequence of Element
c:=⟨⟩
loop
invariant a, b, and c are sorted and ∀e ∈c,e′ ∈a∪b : e ≤e′
if a.isEmpt
超级会员免费看
订阅专栏 解锁全文
732

被折叠的 条评论
为什么被折叠?



