【php】(1)归并排序-PHP版

(1)归并排序-PHP版

Gabriel发布于 53 分钟前

最新在学习算法与数据结构,2018年初的买的课程,到2020年初才开始看。因为自己的半路才出来学习的,之前重来都不懂算法和数据结构,也不明白为什么算法和数据结构是一起的。开始学这门课后,才知道,算法是数据结构优化,数据-结构(存储数据的方式)是相铺相成的。为什么Mysql-存储引擎为Innodb,存储索引的结构为B+数呢?数组,二叉树,堆又有什么作用呢?

代码如下:

<?php

function mergeSort(&$array,$left,$right) {

if ($left >= $right) {

return;

};

$middle = floor(($right+$left)/2);

mergeSort($array,$left,$middle);

mergeSort($array,$middle+1,$right);

merge($array,$left,$middle,$right);

}

function merge(&$array,$left,$middle,$right) {

$tempArr = [];

for($i = $left;$i<=$right;$i++) {

$tempArr[$i-$left] = $array[$i];

}

$i = $left;

$j = $middle + 1;

for($k=$left;$k<=$right;$k++) {

if ($i > $middle) {

$array[$k] = $tempArr[$j-$left];

$j++;

} elseif ($j>$right) {

$array[$k] = $tempArr[$i-$left];

$i++;

} elseif($tempArr[$i-$left] > $tempArr[$j-$left]) {

$array[$k] = $tempArr[$j-$left];

$j++;

} else {

$array[$k] = $tempArr[$i-$left];

$i++;

}

}}

function makeArray($n) {

$array = [];

for ($i = 0;$i<$n;$i++) {

$array[$i] = mt_rand(0,$n);

}

return $array;

}

$array = makeArray(100);

mergeSort($array,0,count($array)-1);

echo implode(",",$array);

需要解释几个参数:
middle:相当于一个数组,每次从数组的中间分开。
tempArr:合并的时候,需要复制出一个相同空间大小的数组
i:数组中被分开的左边的值
j:数组中中间的第一个值

php归并排序

阅读 28发布于 53 分钟前

本作品系原创,采用《署名-非商业性使用-禁止演绎 4.0 国际》许可协议

avatar

Gabriel

24 声望

1 粉丝

0 条评论

得票时间

avatar

Gabriel

24 声望

1 粉丝

宣传栏

最新在学习算法与数据结构,2018年初的买的课程,到2020年初才开始看。因为自己的半路才出来学习的,之前重来都不懂算法和数据结构,也不明白为什么算法和数据结构是一起的。开始学这门课后,才知道,算法是数据结构优化,数据-结构(存储数据的方式)是相铺相成的。为什么Mysql-存储引擎为Innodb,存储索引的结构为B+数呢?数组,二叉树,堆又有什么作用呢?

代码如下:

<?php

function mergeSort(&$array,$left,$right) {

if ($left >= $right) {

return;

};

$middle = floor(($right+$left)/2);

mergeSort($array,$left,$middle);

mergeSort($array,$middle+1,$right);

merge($array,$left,$middle,$right);

}

function merge(&$array,$left,$middle,$right) {

$tempArr = [];

for($i = $left;$i<=$right;$i++) {

$tempArr[$i-$left] = $array[$i];

}

$i = $left;

$j = $middle + 1;

for($k=$left;$k<=$right;$k++) {

if ($i > $middle) {

$array[$k] = $tempArr[$j-$left];

$j++;

} elseif ($j>$right) {

$array[$k] = $tempArr[$i-$left];

$i++;

} elseif($tempArr[$i-$left] > $tempArr[$j-$left]) {

$array[$k] = $tempArr[$j-$left];

$j++;

} else {

$array[$k] = $tempArr[$i-$left];

$i++;

}

}}

function makeArray($n) {

$array = [];

for ($i = 0;$i<$n;$i++) {

$array[$i] = mt_rand(0,$n);

}

return $array;

}

$array = makeArray(100);

mergeSort($array,0,count($array)-1);

echo implode(",",$array);

需要解释几个参数:
middle:相当于一个数组,每次从数组的中间分开。
tempArr:合并的时候,需要复制出一个相同空间大小的数组
i:数组中被分开的左边的值
j:数组中中间的第一个值

以上是 【php】(1)归并排序-PHP版 的全部内容, 来源链接: www.h5w3.com/112888.html

回到顶部