An example of the usage of qsort functions in C language
- 2020-06-01 10:25:52
- OfStack
An example of the usage of qsort functions in C language
Quicksort is one of the most commonly used sorting algorithms. There are also quicksort functions in the standard library of C language.
The qsort function is contained in
<
stdlib.h
>
In the
The qsort function is declared as follows:
void qsort(void * base,size_t nmemb,size_t size ,int(*compar)(const void *,const void *));
Parameter description:
base, the array to sort
nmemb, the number of elements in an array
size, the memory space occupied by each array element, can be obtained using the sizeof function
compar, a pointer to a function is also known as a function pointer. This function is used to compare two array elements. When the first parameter is greater than, equal to, or less than the second parameter, it displays positive, zero, and negative values respectively.
Here are some examples:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
void main(void)
{
int i;
int a[10]={0,1,2,3,4,5,6,7,8,9};
char b[10]={'a','b','c','d','e','f','g','h','i','j'};
double c[10]={0.1,0.2,0.9,0.5,0.3,0.6,0.7,0.8,1.1,1.2};
int cmp1(const void * a,const void * b)
{
return (*(int*)a-*(int*)b);//a>b Return when the
}
int cmp2(const void * a,const void *b)
{
return(*(char*)a-*(char*)b);
}
int cmp3(const void * a,const void * b)
{
if(fabs(*(double*)a-*(double *)b)<1*exp(-20))
return 0;
else
return(((*(double*)a-*(double*)b)>0)?1:-1);
}
qsort(a,10,sizeof(int),&cmp1);// For function Pointers (Pointers to functions), directly pass in the function name and the function name &
// The operation is ok, because the function is called at the address of the function
qsort(b,10,sizeof(char),cmp2);
qsort(c,10,sizeof(double),cmp3);
for(i=0;i<10;i++)
printf("%d ",a[i]);
for(i=0;i<10;i++)
printf("%c ",b[i]);
for(i=0;i<10;i++)
printf("%lf ",c[i]);
}
If you have any questions, please leave a message or come to the site community to exchange discussion, thank you for reading, hope to help you, thank you for your support of the site!