PHP快速排序实现

快速排序

Posted by 蒋为 on July 11, 2018

记录

<?php
/**
 * Created by PhpStorm.
 * User: jiangwei
 * Date: 2018/7/11
 * Time: 上午10:54
 */


//快速排序法封装函数
function quick_Sort($array){
	//先判断是否需要继续进行,若所要排序数组只有一个元素或没有元素则不需要排序
	$len = count($array);
	if($len <= 1)
	{
		return $array;
	}
	//如果所给数组元素大于1个,需要排序
	//选择数组第一个元素作为标尺
	$key = $array[0];
	//初始化两个数组
	$left_array = array();//小于标尺的
	$right_array = array();//大于标尺的

	//遍历所给数组除了标尺外的所有元素,按照大小关系放入两个数组内
	for($i=1;$i<$len;$i++){
		if($array[$i]<$key){
			//如果数组元素小于标尺则将该元素放入左数组
			$left_array[] = $array[$i];
		}else{
			//如果数组元素大于标尺则将该元素放入右数组
			$right_array[] = $array[$i];
		}
	}
	//再分别对 左数组 和 右数组进行相同的排序处理方式
	//递归调用这个函数,并记录结果
	$left_array = quick_Sort($left_array);
	$right_array = quick_Sort($right_array);
	//合并左数组 标尺 右数组
	//array_merge() 函数把两个或多个数组合并为一个数组。
	//如果键名有重复,后面的键名的值覆盖前面的键名的值。如果数组是数字索引的,则键名会以连续方式重新索引。
	//语法   array_merge(array1,array2,array3...)
	return array_merge($left_array,array($key),$right_array);
}



$sortarray = array(13,89,23,9,19,88,56,78,34,69,10,14,90,89);
print_r(quick_Sort($sortarray));