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、此算法,是一种稳定的线性时间排序算法。其基本思想是,用待排序的数作为计数数组的下标,统计每个数字的个数。然后依次输出即可得到有序序列。但是理解比较难,本人还没理解通透,但是总结了几个步骤:
找出数组$arr中最大的数$max
初始化用来计数的数组$count_arr,数组大小为$max
对于计数数组$count_arr键值等于$arr[$i]的值加1
计数数组$count_arr相邻的两个值相加
键值翻转得到数组$over_turn
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, 排序
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!