一个归并排序(分治法)
来源:互联网 发布:杨浦区人口普查数据 编辑:程序博客网 时间:2024/06/05 23:49
<?php
function merge(&$arr,$p,$q,$r){
$n1 = $q-$p+1;
$n2 = $r-$q;
for ($i=0; $i < $n1; $i++) {
$larr[$i] = $arr[$p+$i];
}
for ($j=0; $j < $n2; $j++) {
$rarr[$j] = $arr[$q+$j+1];
}
$i=0;
$j=0;
$k=$p;//三个while是重点难点
while($i<$n1 && $j<$n2){
if( $larr[$i] <= $rarr[$j]){
$arr[$k++] = $larr[$i++];
}else{
$arr[$k++] = $rarr[$j++];
}
}
while($i<$n1){
$arr[$k++] = $larr[$i++];
}
while($j<$n2){
$arr[$k++] = $rarr[$j++];
}
}
function merge_sort(&$arr,$p,$r){
if($p<$r){
$q = floor(($p+$r)/2);
merge_sort($arr,$p,$q);
merge_sort($arr,$q+1,$r);
merge($arr,$p,$q,$r);
return;
}
}
$arr = array(31,59,26,80,56,15,72,54);
$r = count($arr)-1;
merge_sort($arr,0,$r);
echo "<pre>";
var_dump($arr);exit;
echo "</pre>";
阅读全文
0 0
- 一个归并排序(分治法)
- 分治法(归并排序)
- 归并排序(分治法)
- 归并排序(分治法)
- 分治法,归并排序
- 分治法-归并排序
- 分治法-归并排序
- 归并排序-分治法
- 分治法 - 归并排序
- 分治法--归并排序
- 归并排序 分治法
- 归并排序--分治法
- 分治法 & 归并排序
- 分治法-归并排序
- 分治法-归并排序
- 分治法-归并排序
- 分治(归并排序)
- 归并排序(分治)
- struts2的核心和工作原理
- 学习shell --script的执行方式区别(source 、 shscript 、./script)
- 6.3重构查询的方式
- MySQL一些函数
- 两个排序(冒泡 与插入排序)
- 一个归并排序(分治法)
- 更简单的主从复制
- binlog日志相关的一些语句
- Methods of taking a snapshot
- top 命令
- Python 基础-数值
- mysql-5.5.32-android.patch.v1
- Python 基础
- MAVEN指定JDK版本和字符集编码