桶排序与基数排序代码(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 ,旨在入门数据结构与算 ...
- 记数排序 & 桶排序 & 基数排序
为什么要写这样滴一篇博客捏...因为一个新初一问了一道水题,结果就莫名其妙引起了战斗. 然后突然发现之前理解的桶排序并不是真正的桶排序,所以写一篇来区别下这三个十分相似的排序辣. 老年菜兔的觉醒!!! ...
随机推荐
- Android热更新开源项目Tinker集成实践总结
前言 最近项目集成了Tinker,开始认为集成会比较简单,但是在实际操作的过程中还是遇到了一些问题,本文就会介绍在集成过程大家基本会遇到的主要问题. 考虑一:后台的选取 目前后台功能可以通过三种方式实 ...
- ArcGis(01)——地图切片以及发布底图服务
ArcGis(01)——地图切片以及发布底图服务 环境 操作系统:win10_x64 Gis版本:Arcis server 10.2 准备 1.tif格式地图资源 2.Arcis server 10. ...
- Qt零基础教程(四) QWidget详解篇
在博客园里面转载我自己写的关于Qt的基础教程,没次写一篇我会在这里更新一下目录: Qt零基础教程(四) QWidget详解(1):创建一个窗口 Qt零基础教程(四) QWidget详解(2):QWid ...
- MESH
本文由博主(YinaPan)原创,转载请注明出处:http://www.cnblogs.com/YinaPan/p/Unity_meshtest.html A class that allows c ...
- memset 初始化数组
memset是初始化一段内存区域的函数,其头文件是<string.h>,以前经常使用出现错误,整理一下. C++ Reference对于memset的定义为: void * memset ...
- 【USACO 1.4.4】母亲的牛奶
[题目描述] 农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的.有时,约翰把牛奶从一个桶倒到另一个桶中,直到被灌桶装满或原 ...
- JQUERY1.9学习笔记 之内容过滤器(二) 空元素选择器
描述:选择没有子元素(包括文本节点)的标签. jQuery(":empty") 与:parent相反. 例:找出所有为空的元素.(他们没有子元素或文本元素). <!docty ...
- Delphi笔记(GL_Scene四轴飞行器模型)
有了前的一篇做铺垫,已经简单的说了GL_Scene的下载安装和一个简单的实例制作.现在就要开始制作一个3D的模型了,具体的步骤就不再这里多说了,直接上图和代码吧! [第一版]先看一下最开始的版本吧,比 ...
- Shared and Exclusive Locks 共享和排它锁
14.5 InnoDB Locking and Transaction Model InnoDB 锁和事务模型 14.5.1 InnoDB Locking 14.5.2 InnoDB Transact ...
- POJ2524 Ubiquitous Religions(并查集)
题目链接. 分析: 给定 n 个点和 m 条无项边,求连通分量的数量.用并查集很简单. #include <iostream> #include <cstdio> #inclu ...