当前位置: 首页 > 后端技术 > PHP

(1)Mergesort-PHP版

时间:2023-03-30 01:28:48 PHP

目前正在学习算法和数据结构。课程是2018年初买的,2020年初开始看的,因为中途出来学习,之前对算法和数据结构不了解,也不明白为什么算法和数据结构是一起。上了这门课之后,我才明白算法就是数据结构优化,data-structure(存储数据的方式)是相辅相成的。为什么Mysql-存储引擎是Innodb,存储索引的结构是B+数?数组、二叉树和堆的作用是什么?代码如下:=$right){return;};$middle=floor(($right+$left)/2);mergeSort($array,$left,$middle);mergeSort($array,$middle+1,$right);merge($array,$left,$middle,$right);}函数合并(&$array,$left,$middle,$right){$tempArr=[];对于($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++;}}}函数makeArray($n){$数组=[];对于($i=0;$i<$n;$i++){$array[$i]=mt_rand(0,$n);}return$array;}$array=makeArray(100);mergeSort($array,0,count($array)-1);echoimplode(",",$array);几个参数需要说明一下:middle:相当于一个数组,每次把tempArr从数组中间分开:合并的时候,需要复制出一个相同空间大小的数组i:分开的左边的值在数组j中:数组中间的第一个值