标签:
<?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>";
?>
标签:
原文地址:http://www.cnblogs.com/wgphp/p/4507768.html