算法导论2归并排序
来源:互联网 发布:显卡风扇测试软件 编辑:程序博客网 时间:2024/05/16 12:17
合并排序,也叫归并排序,是利用递归把两个已经排序好的数据合并成一个有序数组的过程.
最差时间复杂度:O(nlog(n))
最优时间复杂度:O(n)
数据结构:数组.控件复杂度:O(n),需要一个临时数组
原理:
假设A和B是两个已经排序好的数组,要生成一个C数据包含AB所有元素并且是有序的,他的过程是这样的,把A,B的当前位置(从0开始)的元素做比较,较小的元素放到C的当前位置,被选中的数组当前位置增加一位,C的当前位置也增加一位.然后继续比较,直到其中一个数组比较完毕,把另外的数组剩下的元素全部放在C的末尾.这样就得到一个排序好的C数组.
合并排序的前提是A和B都是已经排序好的数组.
如果要对一个数组排序,可以把数组分为左右两部分,分别对这两部分排序,在利用上述方法合并.这就是分治法.
合并排序利用递归把数组一层一层分开.直到最后剩一个元素了(1个元素当然是排序好的),再一层一层的把数组合并.
很多算法用到递归,递归的理解,可参考文章:理解递归.
http://blog.csdn.net/dawei2047218/article/details/23681229
合并排序的算法C语言实现如下
0 0
- 算法导论2归并排序
- 【算法导论】归并排序
- [算法导论]归并排序
- 算法导论-----归并排序
- 【算法导论】归并排序
- 算法导论-归并排序
- 算法导论-归并排序
- 算法导论 归并排序
- 算法导论-归并排序
- 《算法导论》--归并排序
- 算法导论--归并排序
- 算法导论2.3.2--归并排序
- [算法导论 第2章]归并排序
- 算法导论复习(2) 归并排序
- 算法导论P17 归并排序
- 算法导论_归并排序
- 算法导论学习------归并排序
- 算法导论之归并排序
- Java中BigDecimal 和 BigInteger 类型数据操作学习总结
- python webservice sax xml解析
- jsfl语法分析
- [MongoDB]db.serverStatus()命令详解
- 读《春秋》有感之十八:卫献公流亡
- 算法导论2归并排序
- Java实现ldap实例化
- mina框架学习笔记
- Oracle 深入解析B-Tree索引与Bitmap位图索引的锁代价
- Centos虚拟机上安装VMWare Tools
- linux命令--uname
- VS2008实现QT编程
- 关于Eclipse代码补全的一点小技巧
- jcseg中文分词器去除不需要的分词