【牛客網】直通bat-面試演算法精品課_第2章 排序 2.10 基數排序練習題(JAVA版)
阿新 • • 發佈:2019-02-01
對於一個int陣列,請編寫一個基數排序演算法,對陣列元素排序。
給定一個int陣列A及陣列的大小n,請返回排序後的陣列。保證元素均小於等於2000。
測試樣例:[1,2,3,5,2,3],6
[1,2,2,3,3,5]
AC程式碼:
利用LinkedList實現棧的功能
import java.util.*; public class RadixSort { ArrayList<LinkedList<Integer>> arr = new ArrayList<LinkedList<Integer>>(); public int[] radixSort(int[] A, int n) { // write code here for(int i=0; i<10; i++) { arr.add(new LinkedList<Integer>()); } for(int i=0; i<4; i++){ int divisor = (int)Math.pow(10, i); distribute(A, n, divisor); aggregate(A, n); } return A; } public void distribute(int[] A, int n, int divisor) { int index = 0; for (int j = 0; j < n; j++) { index = ((A[j] / divisor) % 10); arr.get(index).addFirst(A[j]); } } public void aggregate(int[] A, int n) { int index = n-1; for (int i = 9; i >= 0 ; i--) { while (!arr.get(i).isEmpty()) { A[index--] = arr.get(i).removeFirst(); } } } }