php快速排序

快速排序是排序中常用的,效率据说还不错,它使用分治算法实现

将一个大的需要排序的序列,分成两个较小的序列!怎么分呢,需要从序列中找出一个元素作为参考元素,通常的做法是拿第一个元素作为参考元素。当一个序列只有一个元素或者零个元素,就说明这个序列已经排序好 。

步骤:
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      

posted @ 2014-10-21 16:03  诚人小李  阅读(588)  评论(0编辑  收藏  举报