Explain it how this rearrange value increasing order | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
+ 1

Explain it how this rearrange value increasing order

#include <stdio.h> #include <stdlib.h> int compare (const void *, const void *); int main() { int arr[5] = {52, 23, 56, 19, 4}; int num, width, i; num = sizeof(arr)/sizeof(arr[0]); width = sizeof(arr[0]); qsort((void *)arr, num, width, compare); for (i = 0; i < 5; i++) printf("%d ", arr[ i ]); return 0; } int compare (const void *elem1, const void *elem2) { if ((*(int *)elem1) == (*(int *)elem2)) return 0; else if ((*(int *)elem1) < (*(int *)elem2)) return -1; else return 1; }

26th Feb 2022, 4:04 PM
BABLU TAUNWAL
BABLU TAUNWAL - avatar
1 Answer
+ 1
The builtin function qsort implements the qsort algorithm. To sort anything, all you need to know is how to compare two items. That is what the compare function is for that is passed to the qsort algorithm as argument. A comparison function essentially returns three possible values: equal, less than, or greater than. C does not have a specific type for that - it encodes this information as integers. A negative result means a < b, 0 means a is equal to b, and finally a positive result means a > b. So, technically, your compare function can be (and would be) shortened to int compare(void *a, void *b) { return ( *(int*)a - *(int*)b ); }
26th Feb 2022, 7:16 PM
Ani Jona 🕊
Ani Jona 🕊 - avatar