桶排序
  1. publicstaticvoid bucketSort(int[] a,int max){
  2.         int[] buckets;
  3.  
  4.         if(a==null || max<1)
  5.             return;
  6.  
  7.         buckets =newint[max]; // 创建一个容量为max的数组buckets,并且将buckets中的所有数据都初始化为0。
  8.  
  9.         for(int i =0; i < a.length; i++) // 1. 计数
  10.             buckets[a[i]]++;
  11.        
  12.         for(int i =0, j =0; i < max; i++)  // 2. 排序
  13.         {
  14.             while((buckets[i]--)> 0)
  15.                 a[j++]= i;
  16.         }
  17.  
  18.         buckets = null;
  19. }
 
 
基数排序
  1. /*
  2. * 获取数组a中最大值
  3. * 参数说明:a -- 数组 n -- 数组长度
  4. */
  5. int get_max(int a[],int n)
  6. {
  7.     int i, max;
  8.  
  9.     max = a[0];
  10.     for(i =1; i < n; i++)
  11.         if(a[i]> max)
  12.             max = a[i];
  13.     return max;
  14. }
  15.  
  16. /*
  17. * 对数组按照"某个位数"进行排序(桶排序)
  18. *
  19. * 参数说明:
  20.  *     a -- 数组
  21.  *     n -- 数组长度
  22.  *     exp -- 指数。对数组a按照该指数进行排序。
  23. *
  24. * 例如,对于数组a={50, 3, 542, 745, 2014, 154, 63, 616};
  25.  *    (01) 当exp=1表示按照"个位"对数组a进行排序
  26.  *    (02) 当exp=10表示按照"十位"对数组a进行排序
  27.  *    (03) 当exp=100表示按照"百位"对数组a进行排序
  28.  *    ...
  29. */
  30. void count_sort(int a[],int n,int exp)
  31. {
  32.     int output[n];             // 存储"被排序数据"的临时数组
  33.     int i, buckets[10]={0};
  34.  
  35.     for(i =0; i < n; i++) // 将数据出现的次数存储在buckets[]中
  36.         buckets[(a[i]/exp)%10]++;
  37.  
  38.     for(i =1; i <10; i++) // 更改buckets[i]。目的是让更改后的buckets[i]的值是该数据在output[]中的位置。
  39.         buckets[i]+= buckets[i -1];
  40.    
  41.     for(i = n -1; i >=0; i--) // 将数据存储到临时数组output[]中
  42.     {
  43.         output[buckets[(a[i]/exp)%10]-1]= a[i];
  44.         buckets[(a[i]/exp)%10]--;
  45.     }
  46.  
  47.     for(i =0; i < n; i++) // 将排序好的数据赋值给a[]
  48.         a[i]= output[i];
  49. }
  50.  
  51. /*
  52. * 基数排序
  53. * 参数说明:  a -- 数组 n -- 数组长度
  54. */
  55. void radix_sort(int a[],int n)
  56. {
  57.     int exp;    // 指数。当对数组按各位进行排序时,exp=1;按十位进行排序时,exp=10;...
  58.     int max = get_max(a, n);    // 数组a中的最大值
  59.  
  60.     for(exp =1; max/exp >0; exp *=10) // 从个位开始,对数组a按"指数"进行排序
  61.         count_sort(a, n, exp);
  62. }
 
 
 
 
 
 
 
 
 
 
 
 

桶排序与基数排序代码(JAVA)的更多相关文章

  1. 由Maximum Gap,对话桶排序,基数排序和统计排序

    一些非比较排序 在LeetCode中有个题目叫Maximum Gap.是求一个非排序的正数数列中按顺序排列后的最大间隔.这个题用桶排序和基数排序都能够实现.以下说一下桶排序.基数排序和计数排序这三种非 ...

  2. Java实现桶排序和基数排序

    桶排序代码: import java.util.Arrays; /** * 桶排序 * 工作的原理是将数组分到有限数量的桶里 * 每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序 ...

  3. 排序基础之非比较的计数排序、桶排序、基数排序(Java实现)

    转载请注明原文地址: http://www.cnblogs.com/ygj0930/p/6639353.html  比较和非比较排序 快速排序.归并排序.堆排序.冒泡排序等比较排序,每个数都必须和其他 ...

  4. Python线性时间排序——桶排序、基数排序与计数排序

    1. 桶排序 1.1 范围为1-M的桶排序 如果有一个数组A,包含N个整数,值从1到M,我们可以得到一种非常快速的排序,桶排序(bucket sort).留置一个数组S,里面含有M个桶,初始化为0.然 ...

  5. java-数组排序--计数排序、桶排序、基数排序

    计数排序引入 不难发现不论是冒泡排序还是插入排序,其排序方法都是通过对每一个数进行两两比较进行排序的,这种方法称为比较排序,实际上对每个数的两两比较严重影响了其效率,理论上比较排序时间复杂度的最低下限 ...

  6. 排序算法-基数排序(Java)

    package com.rao.sort; import java.util.*; /** * @author Srao * @className RadioSort * @date 2019/12/ ...

  7. 桶排序和计数排序的理解实现和比较(Java)

    比较和非比较的区别 常见的快速排序.归并排序.堆排序.冒泡排序等属于比较排序.在排序的最终结果里,元素之间的次序依赖于它们之间的比较.每个数都必须和其他数进行比较,才能确定自己的位置.比较排序的优势是 ...

  8. JavaScript 数据结构与算法之美 - 桶排序、计数排序、基数排序

    1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...

  9. 记数排序 & 桶排序 & 基数排序

    为什么要写这样滴一篇博客捏...因为一个新初一问了一道水题,结果就莫名其妙引起了战斗. 然后突然发现之前理解的桶排序并不是真正的桶排序,所以写一篇来区别下这三个十分相似的排序辣. 老年菜兔的觉醒!!! ...

随机推荐

  1. 实现textarea限制输入字数

    实现textarea限制输入字数(包含中文只能输入10个,全ASCII码能够输入20个) textarea称文本域,又称文本区,即有滚动条的多行文本输入控件,在网页的提交表单中经常用到.与单行文本框t ...

  2. Semaphore (通常用于限制可以访问某些资源(物理或逻辑的)的线程数目)

    Semaphore 通常用于限制可以访问某些资源(物理或逻辑的)的线程数目.例如,下面的类使用信号量控制对内容池的访问: 方法详解: 构造方法摘要 Semaphore(int permits)     ...

  3. C# 判断字符串是否可以转化为数字

    C# 判断字符串是否可以转化为数字 /// <SUMMARY> /// 判断字符串是否可以转化为数字 /// </SUMMARY> /// <PARAM name=&qu ...

  4. NoSQL数据库技术特性解析之文档数据库

    现今云计算的从业人员对NoSQL一词并不感到陌生,虽然很多技术人员都长期从事关系数据库的工作,但现在他们对NoSQL技术充满期待.对于企业来说,从关系型数据库到NoSQL数据库转变绝对是个需要深思熟虑 ...

  5. jquery 文本框聚焦文字删除

    做作业需要,自己写了一个,写的很烂. $(function() { $("#search_input").addClass("before_focus");/* ...

  6. 如何让IIS 8.0支持无后缀图片的访问

    进入“MIME类型”模块后,我们点击右侧的“添加”,然后填好文件扩展名和类型值.对于无后缀的图片文件,扩展名只需填写“点”符号即可,类型值根据图片文件实际的扩展名填写.如果是jpeg格式的,那么就填写 ...

  7. 终于通过了PMP考试,然这只是一个开始。。。

    三个月的辛苦付出,从2015/06/18(本人的生日)开始接受培训,2015/10/6终于收到了PMI发过来的祝贺的邮箱,但是成绩不是很理想.只得了两个B,三个M.但是目标已实现,心情回落. 在这三个 ...

  8. [Git]Git远程仓库

    1.创建ssh key 查看主目录下面 C:\Users\Administrator\.ssh 是否存在 id_rsa 和 id_rsa.pub 文件,如果不存在需要generate new key. ...

  9. localStorage 的基本使用

    ① localstorage大小限制在500万字符左右,各个浏览器不一致② localstorage在隐私模式下不可读取③ localstorage本质是在读写文件,数据多的话会比较卡(firefox ...

  10. Spring事务管理中@Transactional的propagation参数

    所谓事务传播性,就是被调用者的事务与调用者的事务之间的关系.举例说明. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 //in A.java Class A {     @Tr ...