/* * Program to demonstrate qsort, using dynamically allocated array. * (This is program bubble-sort-malloc.c, with custom bubble sort * replaced by library function qsort().) */ #include #include #include void printarray(int size, int nums[]) { for (int i = 0; i < size; ++i) { printf("nums[%d] is %d\n", i, nums[i]); } } void fillwithrandom(int seed, int size, int nums[]) { srand(seed); for (int i = 0; i < size; ++i) { nums[i] = rand(); } } bool check_sorted(int size, int nums[]) { for (int i = 0; i < size-1; ++i) { if (nums[i] > nums[i+1]) { return false; } } return true; } /* function to pass to qsort */ int int_compare(const void *e1, const void *e2) { int *i1 = (int *) e1; int *i2 = (int *) e2; if (*i1 < *i2) return -1; else if (*i1 > *i2) return 1; else return 0; } int main(void) { printf("enter array size, seed\n"); int asize; int seed; if (scanf("%d %d", &asize, &seed) != 2) { printf("error\n"); return 1; } int *nums = malloc(sizeof(*nums) * asize); fillwithrandom(seed, asize, nums); /* printarray(asize, nums); */ /* call library function to sort */ qsort(nums, asize, sizeof nums[0], &int_compare); /* printf("\n"); printarray(asize, nums); printf("\n"); */ printf("sorted? %c\n", check_sorted(asize, nums) ? 'y' : 'n'); free(nums); return 0; }