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

PHP实现快速排序

2017-05-31 22:21 197 查看

快速排序思想:

1.选取数组中一个元素作为比较对象,一般选取第一个元素(为避免发生最坏情况可选择第一个元素、最后一个元素和中间元素的平均值作为比较对象)。

2.遍历数组,将小于比较对象的元素放入一个数组,将大于等于比较对象的元素放入另一个数组。

3.然后在按此方法分别对这两部分数据进行快速排序(递归实现)。

4.将排序好的数组合并成一个数组。

PHP代码实现:

<?php

//带排序数组
$arr = array(4,5,2,5,7,9,8,1,23,5,2,6,8,3);

function my_sort($arr){
//获取数组长度
$len = count($arr);

//长度不足1 直接return
if($len <= 1){
return $arr;
}else{

//新建两个数组,分别存比数组中第一个元素小和比第一个元素大的值
$arr_left = array();
$arr_right = array();

//从第二个元素开始循环,与数组第一个元素比较
for($i = 1;$i< $len;$i++){
//把比第一个元素小的放到$arr_left中,反之放到$arr_right中
if($arr[$i] < $arr[0]){
$arr_left[] = $arr[$i];
}else{
$arr_right[] = $arr[$i];
}
}
//将$arr_left与$arr_right分别排序后再与$arr[0]合并成一个数组,即为排序好的数组
return array_merge(my_sort($arr_left),array($arr[0]), my_sort($arr_right));
}
}

var_dump(my_sort($arr));

//输出:
//    array
//    0 => int 1
//    1 => int 2
//    2 => int 2
//    3 => int 3
//    4 => int 4
//    5 => int 5
//    6 => int 5
//    7 => int 5
//    8 => int 6
//    9 => int 7
//    10 => int 8
//    11 => int 8
//    12 => int 9
//    13 => int 23
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 快速排序 递归