桶排序
  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. 【NOIP2014】赛后总结

    noip考完了,心中所牵挂的一下子就消散了,感觉浑身很轻松. 说实话,我参加noip有好几次了,这应该会是我的最后一次,尽管如此,无论是在考试的前几天还是在考试的时候,心中都没有太多的紧张. 我在no ...

  2. Javascript深度克隆一个对象

    Javascript中的对像赋值与Java中是一样的,都为引用传递.就是说,在把一个对像赋值给一个变量时,那么这个变量所指向的仍就是原来对 像的地址.那怎么来做呢?答案是“克隆”. 克隆有两种方法:一 ...

  3. 正则如何匹配div下的所有<li>标签?

    <?php header('Content-Type:text/html;charset=utf-8'); $str = '<div class="c1s"> & ...

  4. protractor protractor.conf.js [launcher] Process exited with error code 1 undefined:1190

    y@y:karma-t01$ protractor protractor.conf.js [launcher] Process exited with error code undefined: vl ...

  5. Steps

    uva846:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...

  6. NTOPNG修改密码

    感觉这个有点妖,因为在两个实例上修改密码都失败了. 于是,从网上看看是怎么回事, 按以下步骤重置你想要的密码: 1,为密码生成MD5字串: echo -n "your_password&qu ...

  7. 导出数据到excel

    Protected Sub cmdOrderExport_Click(ByVal sender As Object, ByVal e As EventArgs) Handles cmdOrderExp ...

  8. 14.4.3 Adaptive Hash Index 自适应hash index

    14.4.3 Adaptive Hash Index 自适应hash index 自适应hash index(AHI) 让InnoDB 执行更像内存数据库在系统使用合适的负载组合和足够的内存用于Buf ...

  9. BZOJ 1022 [SHOI2008]小约翰的游戏John

    1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1635  Solved: 1036[Submit] ...

  10. BZOJ1537: [POI2005]Aut- The Bus

    1537: [POI2005]Aut- The Bus Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 158  Solved: 100[Submit][S ...