归并排序介绍

一、介绍

      归并排序(Merge sort),是创建在归并操作上的一种有效的排序算法,效率为O(nlogn)。1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。

      归并排序是一种高效、通用、基于比较的排序算法。此外,归并排序还是稳定的,因为相同元素的相对次序在排序后不会发生变化。最开始,归并排序采用的是自顶向下的模式,后来,到了1948年,冯大神和赫尔曼·海因·戈德斯坦(Herman Heine Goldstine)两人共同撰写了一篇报告,描述了归并排序的另外一种实现方式,那就是自底向上。

二、算法复杂度:

比较操作的次数介于(nlogn)/2}和nlogn-n+1}, 赋值操作的次数是(2nlogn。
归并算法的空间复杂度为:O(n)。

三、基本思想:

分为两步:

  1. 分割
          将待排序的线性表不断地切分成若干个子表,直到每个子表只包含一个元素,这时,可以认为只包含一个元素的子表是有序表。
  2. 归并
          将子表两两合并,每合并一次,就会产生一个新的且更长的有序表,重复这一步骤,直到最后只剩下一个子表,这个子表就是排好序的线性表。

      该算法的经典应用就是单链表的排序。

链表排序方法一:
自定向下归并排序:

  1. 找到链表的中间结点,将链表一分为二。
    这里重点是两个子链表要完全分割开。
  2. 对两个子链表分别排序。
  3. 将这两个排序后的子链表合并,得到完整的排序后的链表。

你可能感兴趣的:(归并排序介绍)