Cita: eso no deberia ni compilar. No puedes reservar memoria dinamica de esa manera.
tienes que usar malloc o calloc.
Ademas en C no puedes declarar las variables donde te de la gana.
Ha usado un array en memoria estática eso compila perfectamente y es correcto y puede declarar las variables en cualquier lugar mientras esten declaradas antes de su uso.
En cuanto al código hasta que utilizas el algoritmo de ordenación de burbuja todo bien, pero a pesar de mirarlo varias veces no soy capaz de comprender lo que estás intentado hacer a la hora de calcular la frecuencia de cada valor. Si pudieses poner lo que intentas hacer nos facilitaría bastante ayudar a localizar el error en la implementación del código o del algoritmo que tu has ideado para resolver tu problema.