基数排序 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 ......
Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。
Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pasc ......
java心得!--很好的java学习历程(转自张国宝) 收藏 此文于2009-10-26被推荐到CSDN首页
如何被推荐?
1. 数组有没有length()这个方法? String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。
......
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.Serializable;
import java.rmi.Na ......
首先引用一篇文章,介绍一个简单的JNI的调用的过程。 JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。解决JAVA对本地操作的一种方法就是JNI。 JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DL ......