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>";
?>

 

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