桶排序
  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. 日期Calendar/Date的用法

    package cn.jason.datas; import java.util.Date;import java.text.ParseException;import java.text.Simpl ...

  2. [转]memmove函数

    [FROM MSDN && 百科] 原型:  void *memmove( void* dest, const void* src, size_tcount ); #include&l ...

  3. JavaScript-学习一字符串

    字符串可以存储一系列字符,如 "John Doe". 字符串可以是插入到引号中的任何字符.你可以使用单引号或双引号: 用于字符串的 + 运算符 + 运算符用于把文本值或字符串变量加 ...

  4. struts1、ajax、jquery、json简单实例

    1.页面ajax代码,使用$.ajax,获得json对象后each $.ajax({ type:"GET", url:ctx + "/uploadImg.do" ...

  5. jQuery判断浏览器

    在jQuery1.9版本之前,jQuery 提供了 browser 标记 <script type="text/javascript" src="http://aj ...

  6. jquery easy ui 学习 (7) TreeGrid Actions

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 折半插入排序(Binary Insertion Sort)的C语言实现

    原创文章,转载请注明来自钢铁侠Mac博客http://www.cnblogs.com/gangtiexia   折半插入排序(Binary Insertion Sort)的基本思想是将新记录插入到已经 ...

  8. 解决easyui-tab添加tab滚动条问题

    //添加tab var addTab = function (title, url, icon) { if (!$('#mainTab').tabs('exists', title)) { $('#m ...

  9. JS之路——数组对象

    String字符串对象 concat() 返回一个由两个数组合并组成的新数组 join() 返回一个由数组中的所有元素连接在一起的String对象 pop() 删除数组中最后一个元素 并返回该值 pu ...

  10. Egret 文本处理

    常规处理: private createGameScene():void { var shp = new egret.Shape(); shp.graphics.beginFill(0xff0000, ...