Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static void radixSort(int[] a) {
- int maxOne = a[0], exp = 1, size = a.length;
- for (int anA : a) if (anA > maxOne) maxOne = anA;//Get max
- while (maxOne / exp > 0) {
- int[] bucket = new int[10];
- for (int num : a) {//get count of each digit
- int digit = (num / exp) % 10;
- bucket[digit] += 1;
- }
- for (int i = 1; i <= 9; i++)//define range of
- bucket[i] += bucket[i - 1];//numbers with the same digit
- int temp[] = new int[size];
- for (int i = size - 1; i >= 0; i--) {
- int digit = (a[i] / exp) % 10;
- temp[--bucket[digit]] = a[i];//copy elements to
- } //temp array
- for (int i = 0; i < size; i++) a[i] = temp[i];//copy temp to input array
- exp *= 10;//go next digit
- }
- }
Add Comment
Please, Sign In to add comment