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);
  • 相关阅读:
    java8 Stream排序字段为空排序方法
    SpringBoot使用token简单鉴权的具体实现方法
    性能调优
    TestNG最简单的测试
    TestNG异常测试
    TestNG中如何执行测试
    TestNG的基本注解
    TestNG介绍
    TestNG 环境搭建
    python第四课笔记
  • 原文地址:https://www.cnblogs.com/mackxu/p/2734830.html
Copyright © 2011-2022 走看看