数据结构(7)快速排序

快速排序的基本思想描述:

对于一个长度为N的待排序数列quick_sort($array)其运用快速排序思想为:

1.如果$array中的元素个数为0,或者为1个时,则返回,否则继续

2.选取$array中的一个元素$base_value作为基准数(即枢轴).

3.将所有小于或等于$base_value的元素都放在基准数的左边,将所有大于$base_value的元素放在基准数的右边.

4.再分别从其$base_value左边的数组和右边的数组中选取出一个基准数,再分别进行第3步的步骤

5.当所有所分的$array中的元素个数为0或者为一个时,则证明已经将所有元素进行排序完成


快速排序的PHP实现:

<?php
	



	function quick_sort($array){ 
    $length = count($array); //获取数组长度
	//判断数组长度,若其长度小于或等于1,则证明该数组已经排序完成过者为无效数组
    if($length <= 1) 
    { 
        return $array; 
    } 
    $base_value = $array[0]; //设第一个值为基准数
    $array_left = array();//该数组用于存放小于或等于基准数的值
    $array_right = array(); //该数组用于存放大于基准数的值
    for ($i=1;$i<$length;$i++) 
    { 
		//从左至右寻找第一个小于基准数的值
        if($array[$i] <= $base_value){ 
            $array_left[] = $array[$i]; 
        }else{ 
            $array_right[] = $array[$i]; 
        } 
    } 

	/**********************递归排序**************************/


	//对小于或等于基准数的数组进行一样的排序步骤
    $array_left = quick_sort($array_left); 
	//对大于基准数的数组进行一样的排序步骤
    $array_right = quick_sort($array_right);
	
	//将排完序后的基准数左边的数组和基准数右边的数组进行合并
    return array_merge($array_left,array($base_value),$array_right); 
}


	$arr=array(34,75,44,21,38,9,64,19,88,15);

	$res=quick_sort($arr);
	foreach($res as $key => $value){
		echo "key: ".$key."value :".$value."<br/>";
	}


?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值