Pagini recente » Cod sursa (job #1489875) | Cod sursa (job #2583060) | Cod sursa (job #1265368) | Cod sursa (job #323986) | Cod sursa (job #3303780)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
import static java.lang.System.out;
public class Main {
public static void main(String[] args) throws FileNotFoundException {
ArrayList<Integer> arr = new ArrayList<Integer>();
Scanner scan = new Scanner(new File("radixsort.in"));
while(scan.hasNext()) {
arr.add(scan.nextInt());
}
radixSort(arr);
out.println(arr.toString());
PrintWriter pw = new PrintWriter("radixsort.out");
for(int num : arr) {
pw.print(num + " ");
}
pw.close();
}
public static void radixSort(ArrayList<Integer> arr) {
int maxim = getMax(arr);
for(int i = 1; maxim / i > 0; i *= 10) {
countSort(arr, i);
}
}
public static void countSort(ArrayList<Integer> arr, int i) {
ArrayList<Integer> output = new ArrayList<Integer>();
for(int j = 0; j < arr.size(); j++) {
output.add(0);
}
ArrayList<Integer> digits = new ArrayList<Integer>();
for(int j = 0; j < 10; j++) {
digits.add(0);
}
for(int x : arr) {
int digit = (x / i) % 10;
digits.set(digit, digits.get(digit) + 1);
}
for(int j = 1; j < 10; j++) {
digits.set(j, digits.get(j) + digits.get(j - 1));
}
for(int j = arr.size() - 1; j >= 0; j--) {
int digit = (arr.get(j) / i) % 10;
output.set(digits.get(digit) - 1, arr.get(j));
digits.set(digit, digits.get(digit) - 1);
}
for(int j = 0; j < arr.size(); j++) {
arr.set(j, output.get(j));
}
}
public static int getMax(ArrayList<Integer> arr) {
int max = arr.get(0);
for(int i = 1; i < arr.size(); i++) {
if(arr.get(i) > max) {
max = arr.get(i);
}
}
return max;
}
}