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视频教程》

更多相关文章

  1. php如何修改数组的值?
  2. 如何将curl获取到的json对象转成数组
  3. 最全的php数组操作方法汇总,让你轻松掌握!
  4. PHP中数组规范和自定义集合
  5. PHP根据键值合并数组
  6. PHP 数组常用函数总结
  7. PHP重置数组为连续数字索引的三种方式
  8. PHP之array_unique实现二维数组去重
  9. 分享php生成不重复随机数、数组的4种方法

随机推荐

  1. 判断 android 是否成功联网
  2. android studio 降低项目版本错误,no reso
  3. 异常:java.lang.RuntimeException: Unable
  4. Logger android日志工具
  5. Android(安卓)Studio 报错集合解决方案
  6. 我的Android进阶之旅------>Android(安卓
  7. 2011.07.05——— android notifyDataSet
  8. android兼容2.2及以前版本的退出方法
  9. android 弹出选择框,简单通用弹出选择框
  10. Android图标靠界面的右边的实现