How to check if a given array is a sparse array in C

1 Answer

0 votes
#include <stdio.h>
#include <stddef.h>
#include <stdbool.h>

/*
    Determines whether an array is sparse.
    Sparse means: more zero elements than non‑zero elements.
*/
bool is_sparse(const int *arr, size_t size) {
    size_t zero_count = 0;

    for (size_t i = 0; i < size; i++) {
        if (arr[i] == 0)
            zero_count++;
    }

    /* Compare zero vs non‑zero directly */
    return zero_count > (size - zero_count);
}

int main(void) {
    int arr[] = {0, 4, 0, 1, 0, 0, 0, 3, 0};
    size_t size = sizeof(arr) / sizeof(arr[0]);

    if (is_sparse(arr, size))
        printf("Sparse array\n");
    else
        printf("Not a sparse array\n");

    return 0;
}


/*
run:

Sparse array

*/

 



answered Apr 23 by avibootz
edited Aug 14 by avibootz
...