标签:des blog io os ar 使用 for strong sp
快速排序是排序中常用的,效率据说还不错,它使用分治算法实现
将一个大的需要排序的序列,分成两个较小的序列!怎么分呢,需要从序列中找出一个元素作为参考元素,通常的做法是拿第一个元素作为参考元素。当一个序列只有一个元素或者零个元素,就说明这个序列已经排序好 。
步骤:
1,用一个元素作为参考元
2,分割序列,形成小于参考元和大于参考元的元素
3,分别对校园和大于两个序列使用同样的排序算法完成排序(递归调用)
4,合并左,参考元,和右元素即可
<?php
/**
* 快速排序
* PHP Version 5.3.13
*/
header("Content-type:text/html;charset=utf-8");
function quicksort($list){
$len = count($list);
// 定义递归出口
if($len <= 1){
return $list;
}
$one = $list[0];
// 定义两个序列
$left = $right = array();
for($i=1;$i<$len;++$i){
if($list[$i] < $one){
$left[] = $list[$i];
}else{
$right[] = $list[$i];
}
}
$left = quicksort($left);
$right = quicksort($right);
$result = array_merge($left,array($one),$right);
return $result;
}
$arr = array(45,10,20,30,40,50,60);
echo ‘排序前:‘,print_r($arr);
echo ‘<hr/>‘;
echo ‘排序后:‘,print_r(quicksort($arr));
在运行程序过程中,因为不小心小错一段代码,而产生一个错误,让我感觉到程序的严谨之重要性,他的任何发生我们都要去监控。
Notice: Undefined offset: 0 in D:\lcc\quicksort.php on line 10
标签:des blog io os ar 使用 for strong sp
原文地址:http://www.cnblogs.com/geek12/p/4040611.html