• 分治排序


    归并排序

    时间复杂度O(NlgN)

    分治法解题的一般步骤:

    (1)分解,将要解决的问题划分成若干规模较小的同类问题;

    (2)求解,当子问题划分得足够小时,用较简单的方法解决;

    (3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。

     

    http://www.cnblogs.com/Creator/archive/2011/06/18/2084267.html

    <?php
    function t_sort(&$arr,$start,$end){
        if($start<$end){
            $mid=intval(($start+$end)/2);
            t_sort($arr,$start,$mid);
            t_sort($arr,$mid+1,$end);
            merge_sort($arr,$start,$mid,$end);
        }
    }
    function merge_sort(&$arr,$start,$mid,$end){
        for($i=$start;$i<=$mid;$i++){
            $arrA[]=$arr[$i];
        }
        for($j=$mid+1;$j<=$end;$j++){
            $arrB[]=$arr[$j];
        }
        $i=0;$j=0;$k=0;
        while($i<count($arrA)&&($j<count($arrB))){
            if($arrA[$i]<=$arrB[$j]){
                $arr[$start+$k]=$arrA[$i];
                $i++;
            }
            else{
                $arr[$start+$k]=$arrB[$j];
                $j++;
            }
            $k++;
        }
        while($i<count($arrA)){
            $arr[$start+$k]=$arrA[$i];
            $i++;
            $k++;
        }
        while($j<count($arrB)){
            $arr[$start+$k]=$arrB[$j];
            $j++;
            $k++;
        }
    }
    $arr=array(2,1,3,4,5,10,9,7,8,3,2,12,4,5);
    t_sort($arr,0,count($arr)-1);
    print_r($arr);

     

  • 相关阅读:
    第八章 对象
    第七章 压缩列表
    第六章 整数集合
    Java中的Unsafe
    站在Java的角度看LinkedList
    Java内部类详解
    浅析Java中的final关键字
    ConcurrentHashMap
    阻塞队列
    线程池的使用和实现
  • 原文地址:https://www.cnblogs.com/bugY/p/2383008.html
Copyright © 2020-2023  润新知