基数排序

Posted StringBuilder

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基数排序相关的知识,希望对你有一定的参考价值。

 1 public class Solution
 2 {
 3     public void radixSort(int[] data)
 4     {            
 5         for(int position = 0; position <= getMaxDigit(data); position ++)
 6         {
 7             int[][] bucket = new int[data.length + 1][10];
 8             
 9             for(int i = 0; i < data.length; i ++)
10             {    
11                 int col = 0;
12                 
13                 if(getDigit(data[i]) >= position)
14                 {
15                     col = getNumberForDigit(data[i], position);
16                 }
17                 
18                 int row = ++ bucket[0][col];
19                 
20                 bucket[row][col] = data[i];
21             }
22             
23             for(int count = 0, col = 0; col < 10; col ++)
24             {
25                 for(int row = 1; row <= bucket[0][col]; row ++)
26                 {
27                     data[count ++] = bucket[row][col];
28                 }
29             }
30         }
31     }
32     
33     public int getMaxDigit(int[] data)
34     {
35         int result = 0;
36         
37         for(int item : data)
38         {
39             int position = getDigit(item);
40             
41             if(position > result)
42             {
43                 result = position;
44             }
45         }
46         
47         return result;
48     }
49     
50     public int getDigit(int data)
51     {
52         int result = 0;
53         
54         for(int i = 10; data / i > 0; i = i * 10)
55         {
56             result ++;
57         }
58         
59         return result;
60     }
61     
62     public int getNumberForDigit(int data, int digit)
63     {    
64         int number = (data / (int)Math.pow(10, digit)) % 10;
65         
66         return number;
67     }
68     
69 }

 

以上是关于基数排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构-排序之基数排序(使用java代码实现)

基数排序:基数排序中的“组”是啥意思?

算法-java代码实现基数排序

改变基数排序基础?

LSD基数排序c++代码

为啥我的基数排序 JAVA 实现比快速排序慢?