ES6的箭頭函式和普通函式區別
阿新 • • 發佈:2020-07-24
基數排序又稱關鍵字排序,是一種不需要比較的排序演算法。
1 import java.util.Arrays; 2 import java.util.LinkedList; 3 import java.util.Queue; 4 5 public class MyRadixSort { 6 public static void main(String[] args) { 7 int num[] = {10, 8, 33, 54, 1, 6, 12, 43, 32, 27}; 8 radixSort(num); 9 System.out.println(Arrays.toString(num));10 } 11 12 private static void radixSort(int[] num) { 13 int m = getMax(num); //用來尋找最大元素長度 14 int n = 1; //用來取位,1用來表示取個位數字,10用來表示十位數字 15 //表示0-9的每一個桶 16 Queue buckets[] = new Queue[10]; 17 for (int i = 0; i < buckets.length ; i++) { 18 buckets[i] = newLinkedList(); 19 } 20 /* 21 不可以用Arrays.fill(buckets, new LinkedList<Integer>()); 22 因為該語句會將所有陣列元素新增同一個佇列物件,需要用不同的物件進行初始化 23 */ 24 //當基數排序次數小於len時,繼續進行基數排序 25 while (n < m) { 26 for (int x : num) { 27 int val = (x / n) % 10;28 buckets[val].offer(x); 29 } 30 31 int k = 0; 32 for (Queue queue : buckets) { 33 while (!queue.isEmpty()) { 34 num[k] = (int) queue.poll(); 35 k++; 36 } 37 } 38 n *= 10; 39 } 40 } 41 42 private static int getMax(int[] num) { 43 int max = num[0]; 44 for (int i = 0; i < num.length; i++) { 45 if (num[i] > max) { 46 max = num[i]; 47 } 48 } 49 return max; 50 } 51 }