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实现
- php实现快速排序的三种方法分享
- php实现快速排序
- 不使用PHP内置排序函数对二维数组实现快速排序的面试题
- PHP实现冒泡排序和快速排序
- 二分法和快速排序的PHP实现
- 快速排序、二分法查找的PHP实现代码
- php快速排序原理与实现方法分析
- PHP实现快速排序
- PHP实现快速排序
- php实现快速排序的三种方法分享
- PHP实现快速排序
- PHP实现冒泡排序和快速排序
- php快速排序原理与实现方法分析
- PHP实现快速排序
- PHP实现快速排序与冒泡排序
- php实现快速排序和冒泡排序
- php实现排序算法(一) 冒泡排序 快速排序
- PHP实现排序算法----快速排序(Quick Sort)、快排
- php 实现快速排序