Skip to content

Instantly share code, notes, and snippets.

@davidauza-engineer
Last active December 1, 2019 23:50
Show Gist options
  • Save davidauza-engineer/67f49856171a244e9c4db7018e4d5faf to your computer and use it in GitHub Desktop.
Save davidauza-engineer/67f49856171a244e9c4db7018e4d5faf to your computer and use it in GitHub Desktop.
// Implementación algoritmo Counting Sort.
import java.util.Arrays;
class Main {
// Este método realiza el ordenamiento de un arreglo utilizando el algoritmo CountingSort.
private static int[] countSort(int[] arreglo) {
int tamanoDelArreglo = arreglo.length;
int[] arregloResultante = new int[tamanoDelArreglo];
// Se obtiene el número mayor del arreglo.
int max = arreglo[0];
for (int i = 1; i < tamanoDelArreglo; i++) {
if (arreglo[i] > max) {
max = arreglo[i];
}
}
// Se cuentan las ocurrencias de cada número en el arreglo original y se alamacenan en el nuevo arreglo.
int[] nuevoArreglo = new int[max + 1];
for (int i = 0; i < tamanoDelArreglo; i++) {
nuevoArreglo[arreglo[i]]++;
}
// Se reemplazan los elementos del nuevoArreglo con los elementos de la suma acumulada.
for (int i = 1; i <= max; i++) {
nuevoArreglo[i] += nuevoArreglo[i - 1];
}
// Se llena el arreglo resultante con los elementos correspondientes.
for (int i = tamanoDelArreglo - 1; i >= 0; i--) {
arregloResultante[nuevoArreglo[arreglo[i]] - 1] = arreglo[i];
nuevoArreglo[arreglo[i]]--;
}
return arregloResultante;
}
// Método main que ejecuta el programa.
public static void main(String[] args) {
int[] arreglo = {1, 3, 5, 6, 8, 9, 1};
System.out.println("Se ordenará el arreglo " + Arrays.toString(arreglo));
System.out.println("El arreglo ordenado es " + Arrays.toString(countSort(arreglo)));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment