Counting sort in C: solved exercise

Counting sort in C: solved exercise

This exercise is scheduled for daily publication and follows the standard site structure: statement, solution, and expected output.

Problem statement

Solve the practical case and verify the console output.

C solution

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <stdio.h>

void counting_sort(int a[], int n, int maxv) {
    int c[101] = {0};
    for (int i = 0; i < n; i++) c[a[i]]++;
    int k = 0;
    for (int v = 0; v <= maxv; v++)
        while (c[v]--) a[k++] = v;
}

int main(void) {
    int a[] = {4,2,2,8,3,3,1};
    int n = (int)(sizeof(a)/sizeof(a[0]));
    counting_sort(a, n, 8);
    for (int i = 0; i < n; i++) printf("%d ", a[i]);
    printf("\n");
    return 0;
}

Expected output

1
1 2 2 3 3 4 8

Common mistakes

  • Not validating standard-function return values.
  • Ignoring edge cases for indices, pointers, or buffers.
  • Skipping example-based test runs before publishing.

Practical use

Counting sort is optimal for sorting values in small known ranges, such as grades, ages, or category codes.

Guided practice and full book

If you want a complete path with progressive difficulty:

FAQ

Is this exercise useful for C exams and technical interviews?

Yes. It targets patterns that commonly appear in practice assignments, technical interviews, and C programming exams.

Where can I keep practicing with more solved C exercises?

In Programming in C in 100 Solved Exercises and C Exercises. Kindle Unlimited: View on Amazon.

How should I practice this exercise type to improve faster?

Start with small inputs, run edge cases (empty, one item, max capacity), then rewrite the solution from scratch without copying.