详解php中的几种常见排序方法(附代码)
导读:收集整理的这篇文章主要介绍了详解php中的几种常见排序方法(附代码),觉得挺不错的,现在分享给大家,也给大家做个参考。php中的几种常见排序方法PHP有多种排序方法,本篇文章给大家介绍几种常见的排序方法:冒泡排序、交换法排序、选择法排序、插...
收集整理的这篇文章主要介绍了详解php中的几种常见排序方法(附代码),觉得挺不错的,现在分享给大家,也给大家做个参考。php中的几种常见排序方法
PHP有多种排序方法,本篇文章给大家介绍几种常见的排序方法:冒泡排序、交换法排序、选择法排序、插入法排序、快速排序。希望对大家有所帮助。
排序方法1:冒泡排序
function BubbleSort($arr) {
// 获得数组总长度 $num = count($arr);
// 正向遍历数组 for ($i = 1;
$i $num;
$i++) {
// 反向遍历 for ($j = $num - 1;
$j >
= $i ;
$j--) {
// 相邻两个数比较 if ($arr[$j] $arr[$j-1]) {
// 暂存较小的数 $ITemp = $arr[$j-1];
// 把较大的放前面 $arr[$j-1] = $arr[$j];
// 较小的放后面 $arr[$j] = $iTemp;
}
}
}
return $arr;
}
排序方法2:交换法排序
function ExchangeSort($arr){
$num = count($arr);
// 遍历数组 for ($i = 0;
$i $num - 1;
$i++) {
// 获得当前索引的下一个索引 for ($j = $i + 1;
$j $num;
$j++) {
// 比较相邻两个的值大小 if ($arr[$j] $arr[$i]) {
// 暂存较小的数 $iTemp = $arr[$i];
// 把较大的放前面 $arr[$i] = $arr[$j];
// 较小的放后面 $arr[$j] = $iTemp;
}
}
}
return $arr;
}
排序方法3:选择法排序
function SelectSort($arr) {
// 获得数组总长度 $num = count($arr);
// 遍历数组 for ($i = 0;
$i $num-1;
$i++) {
// 暂存当前值 $iTemp = $arr[$i];
// 暂存当前位置 $IPOs = $i;
// 遍历当前位置以后的数据 for ($j = $i + 1;
$j $num;
$j++){
// 如果有小于当前值的 if ($arr[$j] $iTemp) {
// 暂存最小值 $iTemp = $arr[$j];
// 暂存位置 $iPos = $j;
}
}
// 把当前值放到算好的位置 $arr[$iPos] = $arr[$i];
// 把当前值换成算好的值 $arr[$i] = $iTemp;
}
return $arr;
}
排序方法4:插入法排序
function InsertSort($arr){
$num = count($arr);
// 遍历数组 for ($i = 1;
$i $num;
$i++) {
// 获得当前值 $iTemp = $arr[$i];
// 获得当前值的前一个位置 $iPos = $i - 1;
// 如果当前值小于前一个值切未到数组开始位置 while (($iPos >
= 0) &
&
($iTemp $arr[$iPos])) {
// 把前一个的值往后放一位 $arr[$iPos + 1] = $arr[$iPos];
// 位置递减 $iPos--;
}
$arr[$iPos+1] = $iTemp;
}
return $arr;
}
排序方法5:快速排序
function Quicksort($arr){
$num = count($arr);
$l = $r = 0;
$left = $right = array();
// 从索引的第二个开始遍历数组 for ($i = 1;
$i $num;
$i++) {
// 如果值小于索引1 if ($arr[$i] $arr[0]) {
// 装入左索引数组(小于索引1的数据) $left[] = $arr[$i];
$l++;
}
else {
// 否则装入右索引中(大于索引1的数据) $right[] = $arr[$i];
$r++;
// }
}
// 如果左索引有值 则对左索引排序 if($l >
1) {
$left = QuickSort($left);
}
// 排序后的数组 $new_arr = $left;
// 将当前数组第一个放到最后 $new_arr[] = $arr[0];
// 如果又索引有值 则对右索引排序 if ($r >
1) {
$right = QuickSort($right);
}
// 根据右索引的长度再次增加数据 for($i = 0;
$i $r;
$i++) {
$new_arr[] = $right[$i];
}
return $new_arr;
}
推荐教程:《PHP视频教程》
以上就是详解php中的几种常见排序方法(附代码)的详细内容,更多请关注其它相关文章!
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 详解php中的几种常见排序方法(附代码)
本文地址: https://pptw.com/jishu/596405.html
