您的位置:首页 > 编程语言 > PHP开发

php几种排序的方法--冒泡排序法,选择排序法,快速排序法

2018-02-27 15:39 543 查看
#冒泡排序
function bubbleSort(array $data = [1,22,2,2,45,67,33,122,32,45,543,221,234,230,4,7])
{
$num = count($data);
if ( $num <= 1 ) {
return $data;
}
for($i=1;$i<$num;$i++)
{
for($k=0;$k<$num-$i;$k++)
{
if( $data[$k] > $data[$k+1] ) // > 从小到大  < 从大到小
{
$param = $data[$k+1];
$data[$k+1] = $data[$k];
$data[$k] = $param;
}
}
}
return $data;
}

#选择排序法
function choiceSort(array $data = [1,22,2,2,45,67,33,122,32,45,543,221,234,230,4,7])
{
$len = count($data);
for($i=0;$i<$len-1; $i++) {
$p = $i;
for($j=$i+1; $j<$len; $j++) {
if($data[$p] > $data[$j]) { // > 从小到大  < 从大到小
$p = $j;
}
}
if($p != $i) {
$param = $data[$p];
$data[$p] = $data[$i];
$data[$i] = $param;
}
}
return $data;
}

#快速排序法
function quickSort($data = [1,22,2,45,67,33,122,32,45,543,221,234,230,4,7])
{
//先判断是否需要继续进行
$length = count($data);
if($length <= 1) {
return $data;
}
//选择第一个元素作为基准
$first = $data[0];
//遍历除了标尺外的所有元素,按照大小关系放入两个数组内
//初始化两个数组
$left = [];  //小于基准的
$right = [];  //大于基准的
for($i=1; $i<$length; $i++) {
if($first > $data[$i]) {
//放入左边数组
$left[] = $data[$i];
} else {
//放入右边
$right[] = $data[$i];
}
}
//再分别对左边和右边的数组进行相同的排序处理方式递归调用这个函数
$left = quickSort($left);
$right = quickSort($right);
//合并
return array_merge($left, [$first], $right);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php PHP算法 php排序