fork download
  1. import java.util.Scanner;
  2. import java.util.Arrays;
  3.  
  4. public class Main {
  5.  
  6. static int getMax(int[] arr, int n) {
  7. int maxVal = arr[0];
  8. for (int i = 1; i < n; i++) {
  9. if (arr[i] > maxVal) {
  10. maxVal = arr[i];
  11. }
  12. }
  13. return maxVal;
  14. }
  15.  
  16. public static void countingSort(int[] arr, int n, int exp) {
  17. int[] output = new int[n];
  18. int[] count = new int[10];
  19.  
  20. Arrays.fill(count, 0);
  21.  
  22. for (int i = 0; i < n; i++) {
  23. count[(arr[i] / exp) % 10]++;
  24. }
  25.  
  26. for (int i = 1; i < 10; i++) {
  27. count[i] += count[i - 1];
  28. }
  29.  
  30. for (int i = n - 1; i >= 0; i--) {
  31. output[count[(arr[i] / exp) % 10] - 1] = arr[i];
  32. count[(arr[i] / exp) % 10]--;
  33. }
  34.  
  35. for (int i = 0; i < n; i++) {
  36. arr[i] = output[i];
  37. }
  38. }
  39.  
  40. public static void radixSort(int[] arr, int n) {
  41. int maxVal = getMax(arr, n);
  42.  
  43. for (int exp = 1; maxVal / exp > 0; exp *= 10) {
  44. countingSort(arr, n, exp);
  45. }
  46. }
  47.  
  48. public static void main(String[] args) {
  49. Scanner scanner = new Scanner(System.in);
  50. System.out.print("Enter number of elements: ");
  51. int n = scanner.nextInt();
  52.  
  53. int[] arr = new int[n];
  54.  
  55. System.out.print("Enter " + n + " elements: ");
  56. for (int i = 0; i < n; i++) {
  57. arr[i] = scanner.nextInt();
  58. }
  59. scanner.close();
  60.  
  61. radixSort(arr, n);
  62.  
  63. System.out.print("Sorted Array: ");
  64. for (int i = 0; i < n; i++) {
  65. System.out.print(arr[i] + " ");
  66. }
  67. System.out.println();
  68. }
  69. }
Success #stdin #stdout 0.22s 58736KB
stdin
2 10 11 3 4
stdout
Enter number of elements: Enter 2 elements: Sorted Array: 10 11