您的位置:68399皇家赌场 > 集群主机 > 经文排序算法——桶排序

经文排序算法——桶排序

发布时间:2019-06-29 14:43编辑:集群主机浏览(78)

    桶排序(巴克et sort)或所谓的箱排序,是二个排序算法,专业的规律是将数组分到个别数量的桶里。每种桶再各自动排档序(有比非常的大可能率再采纳别的排序算法或是以递归方式持续行使桶排序实行排序)。桶排序是鸽巢排序的一种总结结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是相比排序,他不面临O(n log n)下限的熏陶。

    PHP排序算法种类之桶排序详解,php排序算法详解

    桶排序

    桶排序(Bucket sort)或所谓的箱排序,是一个排序算法,职业的准则是将数组分到零星数量的桶里。各个桶再分别排序(有希望再使用别的排序算法或是以递归方式继续接纳桶排序实行排序)。桶排序是鸽巢排序的一种归咎结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是相比排序,他不面对O(n log n)下限的震慑。

    原理

    设置四个定量的数组当作空桶子。
    寻访种类,并且把项目叁个二个放到对应的桶子去。
    对各样不是空的桶子举办排序。
    未曾是空的桶子里把项目再放回原本的行列中。

    举例

    万一待排数字[6 2 4 1 5 9]

    预备10个空桶,最大数个空桶
    [0 0 0 0 0 0 0 0 0 0] 空桶
    [0 1 2 3 4 5 6 7 8 9] 桶编号(实际不设有)

    1. 一一从待排数组中收取数字,首先6被抽取,然后把6入6号桶,这一个历程看似那样:空桶[ 待排数组[ 0 ] ] = 待排数组[ 0 ]

    [6 2 4 1 5 9] 待排数组
    [0 0 0 0 0 0 6 0 0 0] 空桶
    [0 1 2 3 4 5 6 7 8 9] 桶编号(实际不存在)

    2. 各种从待排数组中抽取下一个数字,此时2被抽取,将其归入2号桶,是几就放几号桶

    [6 2 4 1 5 9] 待排数组
    [0 0 2 0 0 0 6 0 0 0] 空桶
    [0 1 2 3 4 5 6 7 8 9] 桶编号(实际不设有)

    3,4,5,6省略,进度一样,全体入桶后改成下面那样

    [6 2 4 1 5 9] 待排数组
    [0 1 2 0 4 5 6 0 0 9] 空桶
    [0 1 2 3 4 5 6 7 8 9] 桶编号(实际不设有)
    0象征空桶,跳过,顺序抽取就可以:1 2 4 5 6 9

    PHP代码落成

    <?php
    function bucket_sort($arr){
     $result=[];
     $length=count($arr);
     //入桶
     for($i=0,$max=$arr[$i];$i<$length;$i  ){
      if ($max<$arr[$i]) {
       $max=$arr[$i];
      }
      $bucket[$arr[$i]]=[];
      array_push($bucket[$arr[$i]],$arr[$i]);
     }
     //出桶
     for($i=0;$i<=$max;$i  ){
      if(!empty($bucket[$i])){
       $l=count($bucket[$i]);
       for ($j=0; $j <$l ; $j  ) {
        $result[]=$bucket[$i][$j];
       }
      }
     }
     return $result;
    }
    

    上述正是本文的全部内容,希望对大家的就学抱有帮忙,也希望大家多多扶助帮客之家。

    桶排序 桶排序(巴克et sort)或所谓的箱排序,是二个排序算法,职业的规律是将数组分到有...

    实践结果

    算法步骤

    桶排序以下列程序开始展览:

    • 设置四个定量的数组当作空桶子。
    • 寻访体系,并且把项目多少个三个松手对应的桶子去。
    • 对各种不是空的桶子进行排序。
    • 未有是空的桶子里把项目再放回原来的种类中。

    2. 梯次从待排数组中抽取下贰个数字,此时2被抽取,将其归入2号桶,是几就放几号桶

    1,顺序从待排数组中抽出数字,首先6被抽取,然后把6入6号桶,那一个进程看似那样:空桶[ 待排数组[ 0 ] ] = 待排数组[ 0 ]

    参照他事他说加以调查作品

    • 桶排序

    3,4,5,6省略,进程一样,全体入桶后改成上边这样

    程序

    代码完成(java)

    /**
     *
     * Description: 桶排序
     *
     * 桶排序适用于固定范围大小内数据的排序
     * @param: @param nums
     * @return: void
     * @throws
     */
    public static void bucketSort(int[] nums)
    {   
        // 假设现在是对年龄排序,最大年龄为120
        int BUCKETSIZE = 120;
        int bucket[] = new int[BUCKETSIZE];
        for (int i = 0; i < nums.length;   i) {
            if (i <= BUCKETSIZE && i >= 0) {
                bucket[nums[i]]  ;
            }
        }
        int index = 0;
        for (int i = 0; i < bucket.length; i  ) {
            while (bucket[i] > 0) {
                nums[index  ] = i;
                bucket[i]--;
            }
        }
    }
    

    1. 相继从待排数组中抽出数字,首先6被抽取,然后把6入6号桶,这一个进程看似那样:空桶[ 待排数组[ 0 ] ] = 待排数组[ 0 ]

    比如待排数字[6 2 4 1 5 9]

    定义

    桶排序(英文:巴克et Sort)或所谓的箱排序,是一个排序算法,专门的学问的法规是将数组分到零星数量的桶里。每一种桶再各自动排档序(有望再使用别的排序算法或是以递归方式继续应用桶排序进行排序)。桶排序是鸽巢排序的一种归咎结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是比较排序,他不面对O(n log n)下限的震慑。

    设置一个定量的数组当作空桶子。
    寻访系列,并且把项目二个两个放权对应的桶子去。
    对各类不是空的桶子实行排序。
    从不是空的桶子里把项目再放回原本的行列中。

    [0 020 0 0 6 0 0 0]   空桶

    桶排序

    [01 2045 60 09]   空桶

    <?php
    function bucket_sort($arr){
     $result=[];
     $length=count($arr);
     //入桶
     for($i=0,$max=$arr[$i];$i<$length;$i  ){
      if ($max<$arr[$i]) {
       $max=$arr[$i];
      }
      $bucket[$arr[$i]]=[];
      array_push($bucket[$arr[$i]],$arr[$i]);
     }
     //出桶
     for($i=0;$i<=$max;$i  ){
      if(!empty($bucket[$i])){
       $l=count($bucket[$i]);
       for ($j=0; $j <$l ; $j  ) {
        $result[]=$bucket[$i][$j];
       }
      }
     }
     return $result;
    }
    

    [0 1 2 3 4 567 8 9]   桶编号(实际不设有)

    本文由68399皇家赌场发布于集群主机,转载请注明出处:经文排序算法——桶排序

    关键词: 68399皇家赌场 算法 加瓦 编程记录

上一篇:皇家赌场:C语言合并多个数组并去重

下一篇:没有了