zoukankan      html  css  js  c++  java
  • php实现木桶排序

    今天重新看了看木桶排序,思路比较简单,这里整理一下,免得下次忘记。

    假设要对一组数据 2 2 3 1 6 5 4  进行桶排序。

    1.首先选出最小元素1和最大元素6,做一个桶,也就是定义一个1-6的数组,并且把他们的值都置为0。

    2.遍历这个桶,每一步遍历桶都在该数组中查找是否有元素和这个桶的下标相等,如果有,则该桶中该下标对应的元素值自增1;

    3.遍历桶,根据数组中元素在桶中出现的次数就可以排好序了,用一个数组保存结果并返回。

    代码如下:

     1 <?php
     2 
     3 $list = array(2,2,3,1,6,5,4);
     4 
     5 function backetSort($list){
     6     $min = min($list);
     7     $max = max($list);
     8     //做桶,最小值到最大值全部用0填充
     9     $arr = array_fill($min,$max-$min+1,0);
    10     //入桶
    11     foreach($list as $k=>$v){
    12         $arr[$v]++;
    13     }
    14 
    15     foreach($arr as $k=>$v){
    16         for($i=1;$i<=$v;$i++){
    17             $result[] = $k;
    18         }
    19     }
    20     return $result;
    21 }
    22 
    23 $list = backetSort($list);
    24 
    25 var_dump($list);
  • 相关阅读:
    App Store 审核指南
    Redis持久化
    PHP扩展高性能日志系统SeasLog简单上手
    Linux下Redis的安装配置
    Windows下Redis的安装
    安装wamp环境 最新完整版
    Git安装配置(完整版)
    Linux下SVN配置
    配置最新版LAMP环境
    Linux下ftp的安装配置
  • 原文地址:https://www.cnblogs.com/tanxing/p/5003463.html
Copyright © 2011-2022 走看看