首页 > 代码库 > 排序算法

排序算法

一:冒泡算法

 1 <pre> 2 <?php 3 header(‘Content-Type:text/html;charset=utf-8‘); 4  5 $array = array(20,34,8,27,3,41); 6  7 for($k=0,$length=count($array);$k<$length-1;++$k){ 8     //>>1.第一次冒泡 9     for($i=0,$length=count($array);$i<$length-1-$k;++$i){10         if($array[$i]>$array[$i+1]){//相邻的元素进行比较11             //>>交换相邻的位置上的数据12             $temp = $array[$i];13             $array[$i] =  $array[$i+1];14             $array[$i+1] = $temp;15         }16     }17 }18 var_dump($array);19 20 21 exit;22 //>>1.第一次冒泡23 for($i=0,$length=count($array);$i<$length-1-0;++$i){24     if($array[$i]>$array[$i+1]){//相邻的元素进行比较25         //>>交换相邻的位置上的数据26         $temp = $array[$i];27         $array[$i] =  $array[$i+1];28         $array[$i+1] = $temp;29     }30 }31 32 //>>2.第二次冒泡33 for($i=0,$length=count($array);$i<$length-1-1;++$i){34     if($array[$i]>$array[$i+1]){//相邻的元素进行比较35         //>>交换相邻的位置上的数据36         $temp = $array[$i];37         $array[$i] =  $array[$i+1];38         $array[$i+1] = $temp;39     }40 }41 42 //>>3,第三次冒泡43 for($i=0,$length=count($array);$i<$length-1-2;++$i){44     if($array[$i]>$array[$i+1]){//相邻的元素进行比较45         //>>交换相邻的位置上的数据46         $temp = $array[$i];47         $array[$i] =  $array[$i+1];48         $array[$i+1] = $temp;49     }50 }51 var_dump($array);
View Code

二:快速排序

 1 <pre> 2 <?php 3 header(‘Content-Type:text/html;charset=utf-8‘); 4  5 $array = array(12,9,4,18,7,2,38,34,8,3,41); 6 /* 7  * 1.定义一个函数 8  * 2.递归点:  在什么情况下继续调用当前方法 9  * 3.递归出口: 在什么情况下不调用当前方法10  */11 /*12  * @param  $array 待分割的数组13  *14  *15  */16 function quickSort($array){17     //>>1.递归出口18     $length = count($array);19     if($length<=1){20         return $array;21     }22     //>>2.开始分割23 //    创建两个空数组分别来存放分割出来的大的和小的数.24 //     $big = $small = array();25        $big = array();26        $small = array();27        //从数组中取出第一个元素作为参考值28        $tag = $array[0];29        //循环完后才把大的放到$big,把小的放到$small30        for($i=1;$i<$length;++$i){31             if($array[$i]<$tag){32                 $small[] = $array[$i];33             }else{34                 $big[] = $array[$i];35             }36        }37 38 39        //>>3. 递归点... 分割到最后一个的话就会返回,所以接收返回值40       $big_sort = quickSort($big);41       $small_sort = quickSort($small);42        //>>4. 再进行合并43     return array_merge($small_sort,array($tag),$big_sort);44 45 }46 47 48 $result = quickSort($array);49 var_dump($result);
View Code

 

排序算法