PHP算法

一,实现快速排序

 1 <?php
 2 function quickSort($arr) {
 3     $len=count($arr) ;
 4         if($len<=1) {
 5             return $arr;
 6         }
 7         $key=$arr[0];
 8         $left_arr=array();
 9         $right_arr=array();
10         for($i=1;$i<$len;$i++) {
11             if($arr[$i]<=$key) {
12                 $left_arr[]=$arr[$i];
13             }else {
14                 $right_arr[]=$arr[$i];    
15             }
16         }
17        $left_arr=quickSort($left_arr);
18        $right_arr=quickSort($right_arr);
19        return array_merge($left_arr,array($key),$right_arr);
20 
21 }
22 $table=array(45,12,65,23,67,66,22,78,42);
23 print_r(quickSort($table));

方法是

1、建立一个quickSort()的函数,首先设置先设置一个变量为该数组的第一位,

2、接下来的该数组数值与第一位比较,若大于第一位,则分化到$right_arr这个数组里去,反之,则划分到$left_arr的数组里;

3、然后$right_arr和$left_arr在不断调用quickSort()这个函数;

4、使用array_merge()将所有分开的数组合并为一个数组。

 

二、冒泡法

 

 1 <?php
 2 function maopaoSort($array){
 3     $len=count($array);
 4     if($len<=1) {
 5         return $array;
 6     }
 7     for($i=0;$i<$len;$i++) {
 8         for($j=$len-1;$j>$i;$j--) {
 9             if($array[$j]>$array[$j-1]){
10                 $tmp=$array[$j];
11                 $array[$j]=$array[$j-1];
12                 $array[$j-1]=$tmp;
13             }
14         }
15     }
16     return $array;
17 }
18 
19 $arr=array(32,43,21,54,15,17,13,18,43,87);
20 print_r(maopaoSort($arr));

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。