zoukankan      html  css  js  c++  java
  • php排序笔记归并排序

    归并排序

    将数组分为左右两部分,然后分别排序,最后再合并

     public function _sort(&$arr,$left,$right){
    
            if($left<$right){
                //如果做小于右则,取出中间值,取整。进入递归过程。
                $mid = floor(($left+$right)/2);
    
                $this->_sort($arr,$left,$mid);
                $this->_sort($arr,$mid+1,$right);
                $this->_merge($arr,$left,$mid,$right);
            }
        }
    
        public function _merge(&$arr,$left,$mid,$right){
            $i = $left;
            $j = $mid+1;
            $tmp = [];
    
            //将两段中最小值取出来,放入临时数组。如果越界则跳出循环。
            while($i<=$mid && $j<=$right){
                if($arr[$i]<$arr[$j]){
                    $tmp[]=$arr[$i++];
                }else{
                    $tmp[]=$arr[$j++];
                }
            }
    
            //判断,左边是否存在,有则将左边剩余部分全部放到tmp中
            while($i<=$mid){
                $tmp[]=$arr[$i++];
            }
            //判断,右边是否存在,有则将右边剩余部分全部放到tmp中
            while($j<=$right){
                $tmp[]=$arr[$j++];
            }
            //将临时数组中数据复制给$arr
            for($k=0,$len=count($tmp);$k<$len;$k++){
                $arr[$left+$k]=$tmp[$k];
            }
           
    
        }
  • 相关阅读:
    第二篇 Flask 中的 Render Redirect HttpResponse
    第一篇 你好,我叫Flask
    redis发布订阅
    redis学习
    mysql+centos7+主从复制
    Linux系统基础优化及常用命令
    vim与程序员
    Shell基本命令
    js bom和dom
    javaScript基础
  • 原文地址:https://www.cnblogs.com/liyante/p/11127441.html
Copyright © 2011-2022 走看看