桶排序与基数排序代码(JAVA)
publicstaticvoid bucketSort(int[] a,int max){int[] buckets;if(a==null || max<1)return;buckets =newint[max];// 创建一个容量为max的数组buckets,并且将buckets中的所有数据都初始化为0。for(int i =0; i < a.length; i++)// 1. 计数buckets[a[i]]++;for(int i =0, j =0; i < max; i++)// 2. 排序{while((buckets[i]--)> 0)a[j++]= i;}buckets = null;}
/** 获取数组a中最大值* 参数说明:a -- 数组 n -- 数组长度*/int get_max(int a[],int n){int i, max;max = a[0];for(i =1; i < n; i++)if(a[i]> max)max = a[i];return max;}/** 对数组按照"某个位数"进行排序(桶排序)** 参数说明:* a -- 数组* n -- 数组长度* exp -- 指数。对数组a按照该指数进行排序。** 例如,对于数组a={50, 3, 542, 745, 2014, 154, 63, 616};* (01) 当exp=1表示按照"个位"对数组a进行排序* (02) 当exp=10表示按照"十位"对数组a进行排序* (03) 当exp=100表示按照"百位"对数组a进行排序* ...*/void count_sort(int a[],int n,int exp){int output[n]; // 存储"被排序数据"的临时数组int i, buckets[10]={0};for(i =0; i < n; i++)// 将数据出现的次数存储在buckets[]中buckets[(a[i]/exp)%10]++;for(i =1; i <10; i++)// 更改buckets[i]。目的是让更改后的buckets[i]的值是该数据在output[]中的位置。buckets[i]+= buckets[i -1];for(i = n -1; i >=0; i--)// 将数据存储到临时数组output[]中{output[buckets[(a[i]/exp)%10]-1]= a[i];buckets[(a[i]/exp)%10]--;}for(i =0; i < n; i++)// 将排序好的数据赋值给a[]a[i]= output[i];}/** 基数排序* 参数说明:a -- 数组 n -- 数组长度*/void radix_sort(int a[],int n){int exp; // 指数。当对数组按各位进行排序时,exp=1;按十位进行排序时,exp=10;...int max = get_max(a, n); // 数组a中的最大值for(exp =1; max/exp >0; exp *=10)// 从个位开始,对数组a按"指数"进行排序count_sort(a, n, exp);}
桶排序与基数排序代码(JAVA)的更多相关文章
- 由Maximum Gap,对话桶排序,基数排序和统计排序
一些非比较排序 在LeetCode中有个题目叫Maximum Gap.是求一个非排序的正数数列中按顺序排列后的最大间隔.这个题用桶排序和基数排序都能够实现.以下说一下桶排序.基数排序和计数排序这三种非 ...
- Java实现桶排序和基数排序
桶排序代码: import java.util.Arrays; /** * 桶排序 * 工作的原理是将数组分到有限数量的桶里 * 每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序 ...
- 排序基础之非比较的计数排序、桶排序、基数排序(Java实现)
转载请注明原文地址: http://www.cnblogs.com/ygj0930/p/6639353.html 比较和非比较排序 快速排序.归并排序.堆排序.冒泡排序等比较排序,每个数都必须和其他 ...
- Python线性时间排序——桶排序、基数排序与计数排序
1. 桶排序 1.1 范围为1-M的桶排序 如果有一个数组A,包含N个整数,值从1到M,我们可以得到一种非常快速的排序,桶排序(bucket sort).留置一个数组S,里面含有M个桶,初始化为0.然 ...
- java-数组排序--计数排序、桶排序、基数排序
计数排序引入 不难发现不论是冒泡排序还是插入排序,其排序方法都是通过对每一个数进行两两比较进行排序的,这种方法称为比较排序,实际上对每个数的两两比较严重影响了其效率,理论上比较排序时间复杂度的最低下限 ...
- 排序算法-基数排序(Java)
package com.rao.sort; import java.util.*; /** * @author Srao * @className RadioSort * @date 2019/12/ ...
- 桶排序和计数排序的理解实现和比较(Java)
比较和非比较的区别 常见的快速排序.归并排序.堆排序.冒泡排序等属于比较排序.在排序的最终结果里,元素之间的次序依赖于它们之间的比较.每个数都必须和其他数进行比较,才能确定自己的位置.比较排序的优势是 ...
- JavaScript 数据结构与算法之美 - 桶排序、计数排序、基数排序
1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...
- 记数排序 & 桶排序 & 基数排序
为什么要写这样滴一篇博客捏...因为一个新初一问了一道水题,结果就莫名其妙引起了战斗. 然后突然发现之前理解的桶排序并不是真正的桶排序,所以写一篇来区别下这三个十分相似的排序辣. 老年菜兔的觉醒!!! ...
随机推荐
- idea sass scss配置
1.安装Ruby win 直接http://rj.baidu.com/soft/detail/22711.html?ald mac linux https://ruby.taobao.org/ 可下 ...
- linux进程创建
1. 进程是程序的执行,会被加载到内存中,每个进程包括程序的代码和数据,其中数据包括程序的变量的数据,外部数据,程序堆栈. 2. Linux中,输入命令,如vi main.c 通过shell来执行, ...
- 【USACO 1.3.1】混合牛奶
[题目描述] 由于乳制品产业利润很低,所以降低原材料(牛奶)价格就变得十分重要.帮助梅丽乳业找到最优的牛奶采购方案. 梅丽乳业从一些奶农手中采购牛奶,并且每一位奶农为乳制品加工企业提供的价格是不同的. ...
- 【USACO 1.1.4】破碎的项链
[题目描述] 你有一条由N个红色的,白色的,或蓝色的珠子组成的项链(3<=N<=350),珠子是随意安排的.这里是 n=29 的二个例子: 1 2 ...
- 花非花-记一次linux上运行时报找不到库函数错误
简介: --->:表示依赖 exe ---> a.so ---> utility.so 问题描述: exe运行起来报a.so中的函数f未定义. 解决过程: 一·nm a.so nm ...
- How to Enable or Disable a cell in DataGridview Row ?
Following link http://msdn.microsoft.com/en-us/library/ms171619.aspxhttp://windowsclient.net/blogs/f ...
- javascript权威指南学习笔记1
打开这本书,进入到javascript的世界.以前都是看各种视频,感觉什么收获也没有,反而弄得脑袋混乱,希望能够按照这本书的节奏掌握javascript这门语言,为我的前端学习打下基础. 学习前准备: ...
- php $_server 整理
$_SERVER['PHP_SELF'] #当前正在执行脚本的文件名,与 document root相关. $_SERVER['argv'] #传递给该脚本的参数. $_SERVER['argc'] ...
- SQLSERVER收缩数据库日志
数据库名为:EKECMS DUMP TRANSACTION EKECMS WITH NO_LOG;BACKUP LOG EKECMS WITH NO_LOG;DBCC SHRINKDATABASE(E ...
- 禁止ultraedit自动检查更新的方法
菜单栏: 高级->配置->应用程序布局->其他 取消勾选“自动检查更新”