• 排序算法__选择排序


     1 <?php
     2 
     3 $arr=array(1,43,54,62,21,66,32,78,36,76,39);  
     4 
     5 //实现思路 双重循环完成,外层控制轮数,当前的最小值。内层 控制的比较次数
     6 function selectSort($arr) {
     7     //$i 当前最小值的位置, 需要参与比较的元素
     8     for($i=0, $len=count($arr); $i<$len-1; $i++) {
     9         //先假设最小的值的位置
    10         $p = $i;
    11 
    12         //$j 当前都需要和哪些元素比较,$i 后边的。
    13         for($j=$i+1; $j<$len; $j++) {
    14             //$arr[$p] 是 当前已知的最小值
    15              //比较,发现更小的,记录下最小值的位置;并且在下次比较时,
    16             if($arr[$p] > $arr[$j]) {
    17                  // 应该采用已知的最小值进行比较。
    18                 $p = $j;
    19             }
    20         }
    21 
    22         //已经确定了当前的最小值的位置,保存到$p中。
    23         //如果发现 最小值的位置与当前假设的位置$i不同,则位置互换即可
    24         if($p != $i) {
    25             $tmp = $arr[$p];
    26             $arr[$p] = $arr[$i];
    27             $arr[$i] = $tmp;
    28         }
    29     }
    30     
    31     //返回最终结果
    32     return $arr;
    33 }
    34 
    35 $arr = selectSort($arr);
    36 
    37 echo "<pre>";
    38 print_r($arr);
    39 
    40 
    41 
    42 
    43 /*
    44 Array
    45 (
    46     [0] => 1
    47     [1] => 21
    48     [2] => 32
    49     [3] => 36
    50     [4] => 39
    51     [5] => 43
    52     [6] => 54
    53     [7] => 62
    54     [8] => 66
    55     [9] => 76
    56     [10] => 78
    57 )
    58 */
    View Code

    该算法使用了交换操作,仅使用了一个辅助单元, 因此其算法空间复杂度为O(1)

    时间复杂度如下所示:

    T(n) = ∑i=1n-1 (n-i) = n(n-1) / 2 = O(n2) 

  • 相关阅读:
    tomcat控制台运行窗口中文乱码
    jquery html5 file 上传图片显示图片
    修改输入框placeholder文字默认颜色-webkit-input-placeholder
    H5移动端知识点总结
    PostgreSQL
    PostgreSQL
    Hexo系列(2)
    SQL
    Java笔记-序列化的注意点
    js、css外部文件的相对路径问题
  • 原文地址:https://www.cnblogs.com/hangtt/p/6427152.html
Copyright © 2020-2023  润新知