排序-归并排序
零、数据结构和算法系列目录 数据结构和算法系列目录(不断更新): http://my.oschina.net/liuzeli/blog/128278 一、归并排序简介 归并排序和插入排序一样,其核心是基于比较的,所以也是比较排序中的一种。归并排序运用的分治算法的思想。在介绍归并排序的同时也简单的介绍一下分治算法,这种算法的核心讲解会在后续的博客中介绍。回国头来继续说归并排序。归并排序有着很好的应用场景,它适合给大规模的数据排序,当数据量非常大时,内存排序困难可以对归并排序稍加改动让其支持分批从硬盘读取数据并进行排序,最后把结果进行合并。归并排序(二路归并)的主要思路就是假设两个数组A和数组B分别已经是排序好的,再对这两个数组A和B进行合并成为一个新的排序好的数组。这一步是归并排序的核心步骤,如果对于这个待排序数组来说,开始先对数组两个两个元素进行排序,在对其合并变成4个元素为一组,在变成8个元素为一组,从而到最后完成所有数据的排序。 二、分治算法的简介 分治算法的主要核心是分而治之的思想,即把原文题进行分解,分解成若干的子问题,在对子问题进行求解,在对所有子问题的答案进行合并从而得到原问题的结果。可以表示成下面叙述的过程。 1. 分解:将原问题分解成若干个规模较小且相对独立的的与原问题形式相同的子问题。 2. 求解:若子问题规模较小并且容易解决时将对其进行求解,否则递归的解决子问题