您的位置:首页 > 编程语言 > Java开发

八大排序算法之-基数排序 java代码

2017-08-02 23:03 405 查看
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;

/**
* Created by Administrator on 2017/8/2.
*/
public class radixSort_ {
public static int inbucknum = 2;
public static void main(String args[]) {
int[] arr = {73, 22,25,71, 93, 43, 55, 14, 28, 65, 39, 81};
radixsort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}

/*算法思想:
* 1.由于需要10个桶存放0-9,并且每个桶中放置数组中元素,
* 所以创建队列数组
* 2.依次按照个位,十位进行入桶,全部入桶后按照0-9桶覆盖到数组中
* 3.重复2*/
private static void radixsort(int[] arr, int start, int end) {
Queue<Integer> [] que = new Queue[10];//定义一个队列数组
for (int i = 0; i<10; i++) {//初始化队列数组
que[i] = new LinkedList<Integer>();
}
for (int m = 0; m<inbucknum; m++) {//设定入桶排序的趟数
//入桶
for (int i = 0; i<=end; i++) {
int k = keynum(arr[i],m);//
que[k].offer(arr[i]);
}
//出桶
int index = 0;
for (int i = 0; i< 10; i++) {
while (!que[i].isEmpty()) {
arr[index++] = que[i].poll();
}
}
}
}

private static int keynum(int value, int m) {
if (m == 0) {
return value%10;
}
int d = 1;
for (int i = 0; i<m; i++) {
d *=10;
}
return (value/d)%10;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息