La clasificación por conteo es una técnica de clasificación basada en claves entre un rango específico. Funciona contando la cantidad de objetos que tienen valores clave distintos (tipo de hashing). Luego, haga algo de aritmética para calcular la posición de cada objeto en la secuencia de salida.
Java
// Java implementation of Counting Sort class CountingSort { void sort(char arr[]) { int n = arr.length; // The output character array that will have sorted arr char output[] = new char[n]; // Create a count array to store count of individual // characters and initialize count array as 0 int count[] = new int[256]; for (int i = 0; i < 256; ++i) count[i] = 0; // store count of each character for (int i = 0; i < n; ++i) ++count[arr[i]]; // Change count[i] so that count[i] now contains actual // position of this character in output array for (int i = 1; i <= 255; ++i) count[i] += count[i - 1]; // Build the output character array for (int i = 0; i < n; ++i) { output[count[arr[i]] - 1] = arr[i]; --count[arr[i]]; } // Copy the output array to arr, so that arr now // contains sorted characters for (int i = 0; i < n; ++i) arr[i] = output[i]; } // Driver method public static void main(String args[]) { CountingSort ob = new CountingSort(); char arr[] = {'g', 'e', 'e', 'k', 's', 'f', 'o', 'r', 'g', 'e', 'e', 'k', 's' }; ob.sort(arr); System.out.print("Sorted character array is "); for (int i = 0; i < arr.length; ++i) System.out.print(arr[i]); } } /*This code is contributed by Rajat Mishra */
Producción:
Sorted character array is eeeefggkkorss
Complejidad de tiempo: O(n+k) donde n es el número de elementos en la array de entrada yk es el rango de entrada. Espacio Auxiliar: O(n+k)
¡ Consulte el artículo completo sobre clasificación por conteo para obtener más detalles!
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA