PHP数组排序算法实现(14种)

本文将介绍快速排序、计数排序、梳排序、堆排序、归并排序、希尔排序、选择排序、插入排序、地精排序、联合冒泡排序、鸡尾酒排序、冒泡排序、奇偶排序、使用标志的冒泡排序14种排序算法的实现。

快速排序

1、思想:主要采用了递归和分治的思想。选择标尺后,进行遍历数组,将大于标尺的放到一个数组,将小于标尺的放置到一个数组。再递归调用本函数并记录结果。

2、实现

function quickSort($arr) {
//先判断是否需要继续进行
$length = count($arr);
if($length $arr[$i]) {
$left[] = $arr[$i];
}else {
$right[] = $arr[$i];
}
}

    //递归调用并记录    $left = $this->quickSort($left);    $right = $this->quickSort($right);    //合并    return array_merge($left,array($base_num), $right);

3、输入$arr = array(12, 100, 3, 20, 11,50);

4、输出

array:6 [▼
0 => 3
1 => 11
2 => 12
3 => 20
4 => 50
5 => 100
]

计数排序

1、此算法,是一种稳定的线性时间排序算法。其基本思想是,用待排序的数作为计数数组的下标,统计每个数字的个数。然后依次输出即可得到有序序列。但是理解比较难,本人还没理解通透,但是总结了几个步骤:

  1. 找出数组$arr中最大的数$max

  2. 初始化用来计数的数组$count_arr,数组大小为$max

  3. 对于计数数组$count_arr键值等于$arr[$i]的值加1

  4. 计数数组$count_arr相邻的两个值相加

  5. 键值翻转得到数组$over_turn

  6. loop$over_turn,按照顺序push到最终的数组$result

2、实现

function countingSort($arr) {

    $length = count($arr);    if($length =0;$i--) {        $over_turn[$count_arr[$arr[$i]]] = $arr[$i];        $count_arr[$arr[$i]]--; // 前一个数找到位置后,那么和它值相同的数位置往前一步    }    //按照顺序排列    $result = array();    for ($i=1;$i

3、输入$arr = array(8,6,1,3,4)

4、输出

array:5 [▼
0 => 1
1 => 3
2 => 4
3 => 6
4 => 8
]
待补充

关键字:php, 数组排序, arr, 排序

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部