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

    一:冒泡算法

     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
  • 相关阅读:
    MySQL集群搭建(4)-MMM+LVS+Keepalived
    MySQL集群搭建(3)-MMM高可用架构
    MySQL集群搭建(2)-主主从模式
    MySQL集群搭建(1)-主备搭建
    MySQL 安装(二进制版)
    Nginx缓存了DNS解析造成后端不通--代理
    开启tcp_timestamps和tcp_tw_recycle造成NAT转发连接不上
    tcp_tw_recycle参数引发的故障
    记一次TIME_WAIT网络故障
    TCP服务端收到syn但是不回复syn ack问题分析
  • 原文地址:https://www.cnblogs.com/qzjpkfj/p/4051863.html
Copyright © 2011-2022 走看看