Last active
December 1, 2019 23:50
-
-
Save davidauza-engineer/67f49856171a244e9c4db7018e4d5faf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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