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
     
  • 相关阅读:
    深度学习(dropout)
    centos 常见软件安装
    最近读的书 与论文
    如何理解反向传播 Backpropagation 梯度下降算法要点
    ubuntu 15 安装cuda,开启GPU加速
    快速排序算法
    Linux网络中接收 "二进制" 流的那些事 --- 就recv的返回值和strlen库函数进行对话
    linux源码升级编译内核
    C/C++中慎用宏(#define)
    Qt之hello world
  • 原文地址:https://www.cnblogs.com/LF-place/p/11537593.html
Copyright © 2011-2022 走看看