- 合并排序(归并排序)介绍
简单介绍:是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。(来自百度百科)
时间复杂度:最坏情形、最好情形、平均时间复杂度都是: Θ ( n l g n ) \Theta(nlg n) Θ(nlgn)
空间复杂度: T ( n ) T(n) T(n)
举个例子:给数组 A = { 3 , 5 , 1 , 6 , 9 , 2 } A = \{3, 5, 1, 6, 9, 2\} A={
3,5,1,6,9,2}排序

- 合并排序流程
Merge sort A{1, 2, …, n}
(1) if n=1, done
(2)对A{1, 2, …, [n/2]}和 A{[n/2]+1, …, n]排序(使用递归即可)
(3) merge 2 sorted lists.
- C++实现
#include <iostream>
using namespace std;
#define infty 0x7fff;
void insert_sort(int A[], int length){
for(int j=1; j<length; j++){
int key = A[j];
int i = j-1;
while(i>=0 && A[i]>key){
A[i+1] = A[i