zoukankan      html  css  js  c++  java
  • merge sort and quick sort 自己去理解吧

     1 <?php
     2 
     3 $digits=array(27,45,85,12,36,9,54,56);
     4 function quickSort($arr){
     5   $len=count($arr);
     6   if($len<=1){
     7     return $arr;
     8   }
     9   $midKey=$arr[0];
    10   $lefts=array();
    11   $rights=array();
    12   for($i=1;$i<$len;$i++){
    13     if($arr[$i]<$midKey){
    14         $lefts[]=$arr[$i];
    15     }else{
    16         $rights[]=$arr[$i];
    17     }
    18   }
    19   $lefts=quickSort($lefts);
    20   $rights=quickSort($rights);
    21   return  array_merge($lefts,array($midKey),$rights);
    22 }
    23 echo '<pre>';
    24 //print_r(quickSort($digits));
    25 
    26 function insertSort($digits,$inkey){
    27     $digits=quickSort($digits);
    28     $count=count($digits)-1;
    29     for($j=$count;$j>=0;$j--){
    30         $key=$digits[$j];
    31         if($inkey<=$digits[$j]&&$inkey>=$digits[$j-1]){
    32           $digits[$j]=$inkey;
    33           break;
    34         }
    35         $digits[$j+1]=$key;
    36     }
    37   return $digits;
    38 }
    39 $inkey=24;
    40 //print_r(insertSort($digits,$inkey));
    41 
    42 function mergeSort($digits){
    43   if(count($digits)<=1){
    44     return $digits;
    45   }
    46   $mid=count($digits)/2-1;
    47   $count=count($digits)-1;
    48   $right=array();
    49   $left=array();
    50   for($i=0;$i<=$count;$i++){
    51     if($i<=$mid){
    52       $left[]=$digits[$i];
    53     }else{
    54       $right[]=$digits[$i];
    55     }
    56   }
    57   $left=mergeSort($left);
    58   $right=mergeSort($right);
    59   $result=merge($left,$right);
    60   return $result;
    61 }
    62 function merge($left,$right){
    63   $llen=count($left);
    64   $rlen=count($right);
    65   $count=$llen+$rlen-1;
    66   $i=0;$j=0;
    67   while(count($left)>0||count($right)>0){
    68     if(count($left)>0&&count($right)>0){
    69         if($left[$i]<=$right[$j]){
    70           $result[]=$left[$i];
    71           array_shift($left);
    72         }else{
    73           $result[]=$right[$j];
    74           array_shift($right);
    75         }
    76     }else if(count($right)==0){
    77         $result[]=$left[$i];
    78         array_shift($left);
    79     }else if(count($left)==0){
    80        $result[]=$right[$j];
    81         array_shift($right);
    82     }
    83   }
    84    return $result;
    85 }
    86 print_r(mergeSort($digits));
  • 相关阅读:
    VueJS中学习使用Vuex详解
    https://www.cnblogs.com/chinabin1993/p/9848720.html
    5分钟带你入门vuex(vue状态管理)
    引用第三方 chalk 模块
    Vue-Grid-Layout分享一款好用的可拖拽组件
    vue-grid-layout
    拖拽 ‘vue-grid-layout’ 插件了解下
    Vue国际化处理 vue-i18n 以及项目自动切换中英文
    Java线程池ThreadPoolExecutor使用和分析(三)
    Java线程池ThreadPoolExecutor使用和分析(二)
  • 原文地址:https://www.cnblogs.com/zhangjun516/p/3371850.html
Copyright © 2011-2022 走看看