zoukankan      html  css  js  c++  java
  • 常用排序算法(PHP)

     1 <?php
     2     
     3     /**
     4      * 交换$a,$b的值
     5      * 相当于把$a,$b位置交换了
     6      * 按引用传递,否者只是它们的副本交换了值
     7      * @param int $a    
     8      * @param int $b
     9      */
    10     function swap(&$a, &$b) {
    11         $temp = $a;            //临时变量保存$a值
    12         $a = $b;
    13         $b = $temp;
    14     }
    15     /**
    16      * 输出数组元素
    17      * @param array $arr
    18      */
    19     function display($arr) {
    20         foreach ($arr as $value) {
    21             echo $value." ";
    22         }
    23     }
    24     //冒泡排序法
    25     function bubble_sort(&$arr) {    
    26         $len = count($arr);                //数组的长度
    27         for ($out=0; $out<$len-1; $out++)
    28             for ($in=0; $in<$len-1-$out; $in++) {
    29                 //前面的元素大于后面的元素,交换位置
    30                 if ($arr[$in]>$arr[$in+1])
    31                     swap($arr[$in], $arr[$in+1]);
    32             }
    33     }
    34     
    35     //选择排序,选出最小的值与本趟循环的最左边值交换
    36     function selection_sort(&$arr) {
    37         for ($out=0; $out<count($arr)-1; $out++) {
    38             $min_key = $out;            //记录一趟循环的最小值位置默认第一个位置
    39             for ($in = $out+1; $in<count($arr); $in++) {
    40                 if ($arr[$min_key] > $arr[$in])
    41                     $min_key = $in;
    42             }
    43             swap($arr[$out], $arr[$min_key]);
    44         } 
    45     }
    46     
    47     //插入排序 待排元素的左边已经是有序元素,找到合适位置,插入
    48     function insert_sort(&$arr) {
    49         
    50         //外循环从第二项开始
    51         for ($out=1; $out<count($arr); $out++) {
    52             $temp = $arr[$out];                //腾出位置
    53             $in = $out;
    54             while ($in>0 && $arr[$in-1]>$temp) {
    55                 $arr[$in] = $arr[$in-1];    //向后移动一个位置
    56                 $in--;
    57             }
    58             $arr[$in] = $temp;                //待排元素插入到腾出的位置上
    59         }
    60         
    61     }
    62     
    63     
    64     //----------------------  test --------
    65     
    66     $arr = array(5,2,4,3,1);
    67     //bubble_sort($arr);
    68     //selection_sort($arr);
    69     insert_sort($arr);
    70     display($arr);
  • 相关阅读:
    P31 整体更新或新增 PUT
    P30 整体更新/替换资源 PUT
    P29 自定义错误信息和错误报告
    python: openpyxl带格式复制excel
    Android控件与布局——基础控件RadioButton
    EditText 使用详解
    Linux内核内存检测工具KASAN
    ISP基础(10)-Gamma校正及其实现
    ISP基础(08)-动态范围压缩
    ISP基础(07)-自动曝光
  • 原文地址:https://www.cnblogs.com/mackxu/p/2734830.html
Copyright © 2011-2022 走看看