• 排序算法


    一:冒泡算法

     1 <pre>
     2 <?php
     3 header('Content-Type:text/html;charset=utf-8');
     4 
     5 $array = array(20,34,8,27,3,41);
     6 
     7 for($k=0,$length=count($array);$k<$length-1;++$k){
     8     //>>1.第一次冒泡
     9     for($i=0,$length=count($array);$i<$length-1-$k;++$i){
    10         if($array[$i]>$array[$i+1]){//相邻的元素进行比较
    11             //>>交换相邻的位置上的数据
    12             $temp = $array[$i];
    13             $array[$i] =  $array[$i+1];
    14             $array[$i+1] = $temp;
    15         }
    16     }
    17 }
    18 var_dump($array);
    19 
    20 
    21 exit;
    22 //>>1.第一次冒泡
    23 for($i=0,$length=count($array);$i<$length-1-0;++$i){
    24     if($array[$i]>$array[$i+1]){//相邻的元素进行比较
    25         //>>交换相邻的位置上的数据
    26         $temp = $array[$i];
    27         $array[$i] =  $array[$i+1];
    28         $array[$i+1] = $temp;
    29     }
    30 }
    31 
    32 //>>2.第二次冒泡
    33 for($i=0,$length=count($array);$i<$length-1-1;++$i){
    34     if($array[$i]>$array[$i+1]){//相邻的元素进行比较
    35         //>>交换相邻的位置上的数据
    36         $temp = $array[$i];
    37         $array[$i] =  $array[$i+1];
    38         $array[$i+1] = $temp;
    39     }
    40 }
    41 
    42 //>>3,第三次冒泡
    43 for($i=0,$length=count($array);$i<$length-1-2;++$i){
    44     if($array[$i]>$array[$i+1]){//相邻的元素进行比较
    45         //>>交换相邻的位置上的数据
    46         $temp = $array[$i];
    47         $array[$i] =  $array[$i+1];
    48         $array[$i+1] = $temp;
    49     }
    50 }
    51 var_dump($array);
    View Code

    二:快速排序

     1 <pre>
     2 <?php
     3 header('Content-Type:text/html;charset=utf-8');
     4 
     5 $array = array(12,9,4,18,7,2,38,34,8,3,41);
     6 /*
     7  * 1.定义一个函数
     8  * 2.递归点:  在什么情况下继续调用当前方法
     9  * 3.递归出口: 在什么情况下不调用当前方法
    10  */
    11 /*
    12  * @param  $array 待分割的数组
    13  *
    14  *
    15  */
    16 function quickSort($array){
    17     //>>1.递归出口
    18     $length = count($array);
    19     if($length<=1){
    20         return $array;
    21     }
    22     //>>2.开始分割
    23 //    创建两个空数组分别来存放分割出来的大的和小的数.
    24 //     $big = $small = array();
    25        $big = array();
    26        $small = array();
    27        //从数组中取出第一个元素作为参考值
    28        $tag = $array[0];
    29        //循环完后才把大的放到$big,把小的放到$small
    30        for($i=1;$i<$length;++$i){
    31             if($array[$i]<$tag){
    32                 $small[] = $array[$i];
    33             }else{
    34                 $big[] = $array[$i];
    35             }
    36        }
    37 
    38 
    39        //>>3. 递归点... 分割到最后一个的话就会返回,所以接收返回值
    40       $big_sort = quickSort($big);
    41       $small_sort = quickSort($small);
    42        //>>4. 再进行合并
    43     return array_merge($small_sort,array($tag),$big_sort);
    44 
    45 }
    46 
    47 
    48 $result = quickSort($array);
    49 var_dump($result);
    View Code
  • 相关阅读:
    FT View SE联合Studio 5000仿真
    安装AB编程软件提示安装失败时如何处理
    如何识别Studio 5000程序开发版本号
    Studio 5000编程:一种累计时间的编程方法
    CPU或以太网模块重启DHCP请求
    Studio 5000编程:如何判断AB PLC系统中的硬件设备是否在正常工作
    使用以太网通信方式刷新AB PLC固件
    初探Node-red结合阿里云数据库,定时显示数据
    SQL SERVER 按时间计算每天某值的平均值
    微信小程序对接显示阿里云数据库数据
  • 原文地址:https://www.cnblogs.com/qzjpkfj/p/4051863.html
Copyright © 2020-2023  润新知