本篇内容主要讲解“PHP数组如何运用快速排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP数组如何运用快速排序”吧!
快速排序:
快遠排序(Quicksort)是对冒泡排序的一种改进。通过一-趟排序将要排序的数据分割成独立的两部分,其中-一部分的所有数据都批另外-部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序列。
设要排序的数组是.....N-1]首先任意选取一一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的數都放到它前面,所有比它大的数都放到它后面,这个过程称为- -趟快速排序。值得注意的是,快速排序不是一-种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。
我们以代码为例:
<?php //PHP数组排序:快速排序 $arr = array(1,6,3,4,9,2,7,8); //快速排序 function quick_sort($arr){ //递归出口 $len = count($arr); if($len <= 1) return $arr; //取出某个元素,然后将剩余的数组元素,分散到两个不同的数组中 $left = $right = array(); for($i = 1;$i < $len;$i++){ //第一个元素作为比较元素 //比较:小的放left中,大的放right中 if($arr[$i] < $arr[0]){ $left[] = $arr[$i]; }else{ $right[] = $arr[$i]; } } if($arr[$i] < $arr[0]){ $left[] = $arr[$i]; }else{ $right[] = $arr[$i]; } } //合并三个“数”组. return array_merge($left,(array)$arr[0],$right); } echo '<pre>'; print_r(quick_sort($arr));
运行结果如下:
//$left和$right数组元素没有排好序:递归点
$1eft = quick_ sort($1eft); $right = quick_ sort($right); .
快速排序的算法是:
1)从数组中选出一 -个元素(通常第一一个), 作为参照对象。。
2)定义两个数组,将目标数组中剩余的元素与参照元素挨个比较:小的放到-一个数组,大的放到另外-一个数组。
3)第二步执行完之后,前后的数组顺序不确定,但是确定了自己的位置。
4)将得到的小数组按照第 1到第3部重复操作(子问题)。
5)回溯最小数组 (一个元素)。
到此,相信大家对“PHP数组如何运用快速排序”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。