基数排序

tech2026-06-20  2

https://www.cs.usfca.edu/~galles/visualization/RadixSort.html

public void radixSort(int[] nums) { int n = nums.length; int maxVal = nums[0]; for (int i = 1; i < n; i++) { if (nums[i] > maxVal) maxVal = nums[i]; } int exp = 1; int radix = 10; int[] aux = new int[n]; int[] count = new int[radix]; while (maxVal / exp > 0) { Arrays.fill(count, 0); for (int i = 0; i < n; i++) { count[(nums[i] / exp) % 10]++; } for (int i = 1; i < radix; i++) { count[i] += count[i-1]; } for (int i = n-1; i >= 0; i--) { int idx = --count[(nums[i] / exp) % 10]; aux[idx] = nums[i]; } for (int i = 0; i < n; i++) { nums[i] = aux[i]; } exp *= 10; } System.out.println(); }
最新回复(0)