栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

详解php中的几种常见排序方法(附代码)

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

详解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中的几种常见排序方法(附代码)的详细内容,更多请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/263094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号