return 0;}
2二分归并排序
属于稳定排序,时间复杂度O(n log n) 空间复杂度O(n)
以样例{10,4,,6,3,8,2,5,7}作操作说明
归并排序的算法我们通常用递归实现
先把待排序区间[s,t]以中点二分,
接着把左边子区间排序,再把右边子区间排序,
最后把左区间和右区间用一次归并操作合并成有序的区间[s,t]。
归并操作的工作原理如下:
第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列
第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置
第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置
重复步骤3直到某一指针超出序列尾
将另一序列剩下的所有元素直接复制到合并序列尾
#include <stdio.h>