zoukankan      html  css  js  c++  java
  • 排序算法(上)

    冒泡排序:操作相邻的两个元素进行比较
    0
    $arr = [15,23,6,3,8,3,32,88,23,4];
     
    function mysort($arr)
    {
      $p=0;
      $len =count($arr)-1;
      if($len<=1)return false;
      for($k=0;$k<$len;$k++)
      {
        ++$p;
        $static = false;
        for($i=0;$i <$len; $i++)
        {
          if($arr[$i] > $arr[$i+1]){
            $m = $arr[$i];
            $arr[$i] = $arr[$i+1];
            $arr[$i+1] = $m;
            $static = true;       
          }
        }
          if(!$static)break;
      }
      echo $p;
      return $arr;
    }
     
    $arr = mysort($arr);
    var_dump($arr);
     
     
     
    插入排序:分开为两个区间,已分区间和未分区间
    0
    /**
    * 插入排序
    * $len 统计数组长度
    *
    *分区间,第一个元素作为已分区间,从第二个元素开始进行比较,并且移动数据(比较顺序是从后往前比较移动)
    */
    $arr = [15,23,6,3,8,3,32,88,23,4];
    function myks($arr){
      for($i = 0; $i < count($arr); $i++){
        $val = $arr[$i];
        $j = $i -1;
        while($j >= 0 && $arr[$j] > $val){
          $arr[$j+1] = $arr[$j];
          $j--;
        }
        $arr[$j+1] = $val;
     
      }
      return $arr;
    }
    $m= myks($arr);
    var_dump($m);
     
    选择排序:也是和插入排序一样分为已排区间和未排区间,但是选择排序会从未排区间中找到最小的元素来排序
    0
     
  • 相关阅读:
    累加和最大化
    SELECT子句顺序
    Linux命令入门教程
    求字符串前缀最长的连续重复子串(不重叠)
    王道机试指南题解(C/C++版)
    C++ Primer 第 5 版 习题参考答案
    第 16 章
    第 15 章
    第 14 章
    从jvm源码解读Java运行时的类加载
  • 原文地址:https://www.cnblogs.com/LF-place/p/11537593.html
Copyright © 2011-2022 走看看