首页 > 代码库 > 排序算法
排序算法
一:冒泡算法
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);
二:快速排序
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);
排序算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。