Facebook
From Karol, 6 Years ago, written in Java.
Embed
Download Paste or View Raw
Hits: 272
  1. package com.company;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Main {
  6.  
  7.    static Scanner scanner;
  8.  
  9.     public static void main(String[] args) {
  10.         scanner = new Scanner(System.in);
  11.         int n, i;
  12.         printLn("n = ");
  13.         n = scanner.nextInt();
  14.         int arrayIn[] = new int[n];
  15.         int arrayOut[];
  16.  
  17.         for (i = 0; i < n; i++)  arrayIn[i] = scanner.nextInt();
  18.         arrayOut = countingSort(arrayIn,max(arrayIn));
  19.  
  20.         for (i = 0; i < n; i++)  printLn(arrayOut[i]);
  21.  
  22.     }
  23.  
  24.     static int max(int tablica[])
  25.     {
  26.         int max = tablica[0];
  27.         for (int i = 1; i < tablica.length; i++)
  28.         {
  29.             if (max < tablica[i])
  30.                 max = tablica[i];
  31.         }
  32.         return max;
  33.     }
  34.  
  35.     private static int[] countingSort(int[] arrayIn, int max) {
  36.         int n = arrayIn.length;
  37.         int arrayOut[] = new int[n];
  38.             int arrayC[] = new int[max + 1];
  39.  
  40.         int i;
  41.  
  42.         for (i = 0; i < max; i++) arrayC[i] = 0;
  43.  
  44.         for (i = 0; i < n; i++){
  45.             arrayC[(arrayIn[i])]++;
  46.         }
  47.         for (i = 1; i <= max; i++) {
  48.             arrayC[i] += arrayC[i - 1];
  49.         }
  50.  
  51.         for (i = n - 1; i >= 0; i--)
  52.         {
  53.             arrayOut[(arrayC[(arrayIn[i])]) - 1] = arrayIn[i];
  54.             arrayC[(arrayIn[i])]--;
  55.         }
  56.  
  57.         return arrayOut;
  58.     }
  59.  
  60.     private static void printLn(String s) {
  61.         if (s != null)
  62.         {
  63.             System.out.print(s + " ");
  64.         }
  65.     }
  66.  
  67.     private static void printLn(int s) {
  68.         System.out.print(String.valueOf(s) + " ");
  69.     }
  70.  
  71. }
  72.