算法入门之归并排序(自顶向下方法)
来源:互联网 发布:海康网络摄像头出厂ip 编辑:程序博客网 时间:2024/05/13 14:16
归并排序原理:
归并排序用到的是分治思想,即把一个大问题分成两个小问题,然后把一个小问题再分为两个更小的小问题,从最小的问题开始解决,然后把小问题的结果进行整合,最终解决大问题,这种思想是自顶向下的方法,特点是先进行递归,最终进行排序,在之后的快速排序中可以看到,快速排序特点是先进行排序,后进行递归
算法实现如下:
function less($m, $n) { return $m < $n;}function merge(&$a, $lo, $mid, $hi) { $i = $lo; $j = $mid+1; $tmp = array(); foreach ($a as $v) { $tmp[] = $v; } for($m = $lo; $m <= $hi;$m++) { if($i > $mid) $a[$m] = $tmp[$j++]; else if($j > $hi) $a[$m] = $tmp[$i++]; else if(less($tmp[$i], $tmp[$j])) $a[$m] = $tmp[$i++]; else $a[$m] = $tmp[$j++]; }}function merge_sort(&$a, $lo, $hi) { if($lo >= $hi) return; $mid = intval(($lo+$hi)/2); merge_sort($a, $lo, $mid); merge_sort($a, $mid+1, $hi); merge($a, $lo, $mid, $hi);}$a = array(7, 2, 5, 3, 8, 4, 9, 1, 6);echo "7-2-5-3-8-4-9-1-6<br/>";merge_sort($a, 0, count($a)-1);print_r($a);输出结果:
array(1, 2, 3, 4, 5, 6, 7, 8, ,9)
0 0
- 算法入门之归并排序(自顶向下方法)
- 算法之自顶向下的归并排序
- 算法系列—自顶向下归并排序(递归)
- 归并排序自顶向下
- 自顶向下归并排序
- 图示经典算法--自顶向下的归并排序
- 挖掘算法中的数据结构(二):O(n*logn)排序算法之 归并排序(自顶向下、自底向上) 及 算法优化
- 归并排序(自顶向下) java版本
- 自顶向下的归并排序
- 归并排序 自顶向下实现
- 数据结构-归并排序-自顶向下
- 算法代码实现之归并排序,Golang(Go语言)实现,自顶向下与自底向上两种方式
- 算法代码实现之归并排序,C/C++实现,自顶向下与自底向上两种方式
- 算法代码实现之归并排序,Java实现,自顶向下与自底向上两种方式
- 算法入门之归并排序(自底向上方法)
- 归并排序—自底向上和自顶向下
- 归并排序,自顶向下,自底向上
- 归并排序-自顶向下/自底向上
- JQuery的链式操作
- WinForm多线程编程与Control.Invoke的应用浅谈GOOD
- 在linux(ubuntu 14.04) 上安装 envi5.1
- android学习笔记---图片拉伸和裁剪
- 什么是NAT?
- 算法入门之归并排序(自顶向下方法)
- hdu3336(Count the string)KMP的应用
- PowerDesigner 数据库建模 - 生成表和测试数据
- C语言学习笔记6--函数
- Pat(Advanced Level)Practice--1075(PAT Judge)
- 【C语言学习】15__编译过程介绍
- python基础教程_学习笔记1:序列-1
- SQL优化(Oracle)
- eclipse快捷键大全