算法-java代碼實現基數排序


 


基數排序

 

第11節 基數排序練習題

 

對於一個int數組,請編寫一個基數排序算法,對數組元素排序。

給定一個int數組A及數組的大小n,請返回排序后的數組。保證元素均小於等於2000。

測試樣例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
 
 
1
import java.util.*;
2
 
                       
3
public class RadixSort {
4
   // 各位裝通法
5
    public int[] radixSort(int[] A, int n) {
6
        int length = n;
7
        int divisor = 1;// 定義每一輪的除數,1,10,100...
8
 
                       
9
        int[][] bucket = new int[10][length];// 定義了10個桶,以防每一位都一樣全部放入一個桶中
10
        int[] count = new int[10];// 統計每個桶中實際存放的元素個數
11
        int digit;// 獲取元素中對應位上的數字,即裝入那個桶
12
 
                       
13
        for (int i = 1; i <= 3; i++) {// 經過4次裝通操作,排序完成
14
            for (int temp : A) {// 計算入桶
15
                digit = (temp / divisor) % 10;
16
                bucket[digit][count[digit]++] = temp;
17
            }
18
 
                       
19
            int k = 0;// 被排序數組的下標
20
            for (int b = 0; b < 10; b++) {// 從0到9號桶按照順序取出
21
                if (count[b] == 0)// 如果這個桶中沒有元素放入,那么跳過
22
                    continue;
23
                for (int w = 0; w < count[b]; w++) {
24
                    A[k++] = bucket[b][w];
25
                }
26
                count[b] = 0;// 桶中的元素已經全部取出,計數器歸零
27
            }
28
            divisor *= 10;
29
        }
30
        return A;
31
    }
32
}
 
 
您的代碼已保存
答案正確:恭喜!您提交的程序通過了所有的測試用例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM