基数排序 java 算法
package sort;
public class RadixSort {
// 求x 数第d位上的数字,例如12345,十位数字是4 12345/10%10=4
// d=0 表示个位 ;d=1 表示十位...依次类推
public static int digit(int d,int x){
return x/(int)Math.pow(10, d)%10;
}
public static void radixSort(int a[],int d){// d 表示位:个位,十位,百位....
// 定义10个桶0~9,每个桶存放 位的个数,例如:98,100,23,18
// 个位8,0,,3,8 分别存放在8,0,3,8桶的计数器,其中8号桶=2
int count[]=new int[10];// 定义十个计数器变量
for(int i:a){ // 取数组中每一位
count[digit(d,i)]++;
System.out.println(i+":"+d+"位上的数字是--->"+digit(d,i));
}
int i=0;
for(int c:count){
System.out.println(i+"号桶计数数"+c);
i++;
}
// 求位置
System.out.println("0号桶"+d+"位个数是"+count[0]+",位占数组位置0-"+count[0]);
for(int j=1;j<10;j++){
count[j]+=count[j-1];
System.out.println(j+"号桶"+d+"位个数"+(count[j]-count[j-1])+",占数组位置"+count[j]);
}
// 复制数组,
int [] temp=new int[a.length];
// temp[0]中的0 排 d位最小的digit(d,x)
for(int j=a.length-1;j>=0;j--){
// 注意:j=a.length-1; 还有count[9]=16 数组的长度,要减一
temp[ --count[digit(d,a[j])] ] =a[j];
}
// 一次排序后结果,并复制还原
for(int j=0;j<a.length;j++){
System.out.print(temp[j]+"-->");
a[j]=temp[j];
}
}
public
相关文档:
Java学习从入门到精通
一、 JDK (Java Development Kit)
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......
package com.infowarelab.java.test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectTester {
@SuppressWarnings("unchec ......
java获取当前路径
1、利用System.getProperty()函数获取当前路径:
System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径
2、使用File提供的函数获取当前路径:
File directory = new File("");//设定为当前文件夹
try{
System.out.println(directory.getCano ......
这几天,在网上搜了很多关于java的东西,现在给大家总结一下,非常有用哦,很多东西我们在国内是无法了解到的
java程序员必去的国外网站
http://www.onjava.com
每周都有新文章发表
http://www.developer.com/java
由Gamelan.com 维护的Java技术文章网站
http://www.java.net
Sun公司维护的一个Java社区网站
http:/ ......
首先引用一篇文章,介绍一个简单的JNI的调用的过程。 JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA对本地操作的一种方法就是JNI。 JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DL ......