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

代码如下:

<?phpfunction 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:数组中两头的第一个值