• 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;

      }

  • 相关阅读:
    单例
    ASIHttpRequest加载网络数据和上传数据功能
    JSONModel
    KVC/KVO
    C中的动态内存分配和释放(free)
    IOS开发中Xcode一些使用技巧,快捷键的使用
    Struts2文件上传
    Struts2的输入校验
    struts2类型转换中的错误处理
    struts2自定义类型转换器
  • 原文地址:https://www.cnblogs.com/simengphp/p/6261680.html
Copyright © 2020-2023  润新知