排序算法汇总

来源:互联网 发布:有域名怎么建立网站 编辑:程序博客网 时间:2024/05/16 17:42

归并排序

1.概述

归并排序(Merge Sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide & Conquer Algorithm)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

归并排序的核心思想是将两个已经排序的序列合并成一个序列,那如何得到两个已经排序的序列呢?我们知道, 如果一个序列只有一个元素,那该序列是已经排序的,这样我们就可以利用分治的思想,将未排序的序列划分成更小的序列,只到我们可以很方便的对小序列进行排序(比如划分到序列只有一个元素, 或者序列很小可以方便的使用其它排序算法进行排序),然后再将小序列逐次合并,得到最后的排序结果。

2.算法步骤

  1. 如果序列只有一个元素,那么返回这个元素,这也是递归的基底。
  2. 将一个序列分成两个差不多元素数相同的子序列。
  3. 递归的在两个子序列上调用归并排序。
  4. 合并两个已经排序的子序列。

3.算法分析

算法的运行时间满足递归表达式:T(n)T(n2)+T(n2)+c·n
可以记为
T(n)2T(n2)+c·n
总时间复杂度:T(n)=θ(nlogn)

原创粉丝点击