php常用的数组排序算法
<?php $b_a=array(10,5,9,19,32,61,17,31); ?> <h1>排序前</h1> <?php echo "<pre>"; print_r($b_a); echo "</pre>"; ?> <h1>冒泡排序法</h1> <?php //冒泡排序(一维数组) function bubble_sort($array){ $count = count($array); //假设数组中有三个元素 if ($count <= 0) return false; for($i=0; $i<$count; $i++){ //从下标0开始遍历,$i为0,1,2 for($j=$count-1; $j>$i; $j--){ //依次比较,$j为2,且比较数为:0,1,两次,即最后一位数与前两位比较。 if ($array[$j] < $array[$j-1]){ //如果最后一个数小于前一个数就交换位置。 // $tmp = $array[$j]; //代表两个数组元素的内容交换,两种方式均可。 // $array[$j] = $array[$j-1]; // $array[$j-1] = $tmp; $tmp=$array[$j-1]; $array[$j-1]=$array[$j]; $array[$j]=$tmp; } } } return $array; } echo "<pre>"; print_r(bubble_sort($b_a)); echo "</pre>"; ?> <h1>自己的选择排序法</h1> <?php function my_select_sort($arr){ $count=count($arr); for($i=0;$i<$count;$i++){ //遍历数组中的元素 for($j=$i+1;$j<$count;$j++){ //后一位数组元素 if($arr[$i]>$arr[$j]){ //如果前一位数组元素大于后一位,则交换位置,完成排序。 $tmp=$arr[$i]; $arr[$i]=$arr[$j]; $arr[$j]=$tmp; } } } return $arr; } echo "<pre>"; print_r(my_select_sort($b_a)); echo "</pre>"; ?> <h1>快速排序</h1> <?php function quick_sort($array){ if (count($array) <= 1) return $array; $key = $array[0]; $left_arr = array(); $right_arr = array(); for ($i=1; $i<count($array); $i++){ if ($array[$i] <= $key) $left_arr[] = $array[$i]; else $right_arr[] = $array[$i]; } $left_arr = quick_sort($left_arr); $right_arr = quick_sort($right_arr); return array_merge($left_arr, array($key),$right_arr); } echo "<pre>"; print_r(quick_sort($b_a)); echo "</pre>"; ?> <h1>测试数组的赋值以证实快速排序</h1> <?php $b_a_test=array(); for($b_i=0;$b_i<9;$b_i++){ $b_a_test[]=$b_i; //在循环中会给数组附多个值,形成数列 } echo "<pre>"; print_r($b_a_test); echo "</pre>"; ?>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。