#include <stdio.h>
#include <stdlib.h>
#define MAX 21
void item_arr(int arr[], unsigned int arr_lenght);
void count_sort(int arr[], unsigned int arr_lenght);
int main(int argc, char **argv)
{
int arr[MAX];
int arr_lenght = sizeof(arr) / sizeof(int);
int i;
for (i = 0; i < arr_lenght; i++)
{
arr[i] = 1 + (rand() % 101);
}
item_arr(arr, arr_lenght);
count_sort(arr, arr_lenght);
item_arr(arr, arr_lenght);
return 0;
}
void item_arr(int arr[], unsigned int arr_lenght)
{
int i;
for (i = 0; i < arr_lenght; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
}
void count_sort(int arr[], unsigned int arr_lenght)
{
if (arr_lenght < 2)
{
return;
}
int i, j, k;
int max_num;
int same_num;
int *temp_arr = (int *)calloc(arr_lenght,sizeof(int));
for (i = 0; i < arr_lenght; i++)
{
max_num = 0;
same_num = 0;
for (j = 0; j < arr_lenght; j++)
{
if (arr[j] < arr[i])
{
max_num++;
}
else {
if (arr[j] == arr[i])
{
same_num++;
}
}
}
if (temp_arr[max_num] == 0 && arr[i] != 0)
{
for (k = 0; k < same_num; k++)
{
temp_arr[max_num] = arr[i];
max_num++;
}
}
}
for (k = 0; k < arr_lenght; k++)
{
arr[k] = temp_arr[k];
}
free(temp_arr);
}