• 选择排序selectSort()


     1 // 它的工作原理是每一次从待排序的数据元素中选出最小的一个元素(循环一圈就会把一个最小的值放在此次循环的$i上),将该元素放到该轮的索引位置(该轮的索引指外层循环的$i)上,
     2 function SelectSort(array $container)
     3 {
     4     $count = count($container);
     5     for ($i = 0; $i < $count; $i++){
     6         $k = $i;
     7         for ($j = $i + 1; $j < $count; $j++){
     8             if($container[$j] < $container[$k]){
     9                 $k = $j;
    10             }
    11         }
    12         if($k != $i){
    13             $temp          = $container[$i];
    14             $container[$i] = $container[$k];
    15             $container[$k] = $temp;
    16         }
    17     }
    18     return $container;
    19 }
    20 
    21 //假设测试这个数组[45,23,12,55,6];
    22 // 第一次外循环
    23 $k = $i = 0;
    24 $j=$i+1;
    25 // 内循环第一次  
    26 $k = 0;$j = 1;$container[$j] = $container[1] = 23; $container[$k] = $container[0] = 45;  $k索引上的值大于$j索引上的的值所以此时  $k = $j =1;
    27 // 内循环第二次  
    28 $k = 1;$j = 2;$container[$j] = $container[2] = 12; $container[$k] = $container[1] = 23;  $k索引上的值大于$j索引上的的值所以此时  $k = $j =2;
    29 // 内循环第三次  
    30 $k = 2;$j = 3;$container[$j] = $container[3] = 55; $container[$k] = $container[2] = 12;  $k索引上的值小于$j索引上的的值所以此时  $k没有进入if判断中,所以$k还是2;
    31 // 内循环第四次  
    32 $k = 2;$j = 4;$container[$j] = $container[4] = 6; $container[$k] = $container[1] = 12;  $k索引上的值大于$j索引上的的值所以此时  $k = $j =4;
    33 //此时内层循环结束,$k=$j=4;
    34 因为$k=4;$i=0;不相等,所以$temp = $container[$i] = 45; $container[$i] = $container[$k] = 6; $container[$k] = $temp = 45;
    35 此时原数组变为[6,23,12,55,45],第一轮循环将6这个最小值放在循环开始的初始位置
    36 //第二次外循环
    37 [6,12,23,55,45]
    38 //第三次外循环
    39 [6,12,23,55,45]
    40 //第四次外循环
    41 [6,12,23,45,55]
    42 // 第四次循环结束完成排序
  • 相关阅读:
    域名证书文件包含两段证书
    关于docker的scratch镜像与helloworld
    JS实现网站内容的禁止复制和粘贴、另存为
    使用chromedriver实现豆瓣网页的全网页截图
    Python Tornado初学笔记之数据库(二)
    Python Tornado初学笔记之表单与模板(一)
    Redis中sds 模块的 API
    原码、补码、反码、移码之间的换算
    Python中的位运算
    Python中进制的转换
  • 原文地址:https://www.cnblogs.com/xiaofeilin/p/14963258.html
Copyright © 2020-2023  润新知