C language actually comes with qsort function
2017-11-27 09:05
260 查看
Quick sort is one of the most used sorting algorithm, I have detailed review before, in the C standard library actually has a quick sort function, let’s talk about the details of usage.
The qsort function is contained in
Parameter Description:
1.base, the array to sort;
2.nmemb, the number of elements in the array;
3.size, the memory space occupied by each array element can be obtained using the sizeof function
4.compar, the pointer to the function pointer function. This function is used to compare two array elements, the first parameter is greater than, equal to, less than the second parameter, respectively, showed positive, zero, negative.
Here are a few examples:
The qsort function is contained in
void qsort(void * base,size_t nmemb,size_t size ,int(*compar)(const void *,const void *));
Parameter Description:
1.base, the array to sort;
2.nmemb, the number of elements in the array;
3.size, the memory space occupied by each array element can be obtained using the sizeof function
4.compar, the pointer to the function pointer function. This function is used to compare two array elements, the first parameter is greater than, equal to, less than the second parameter, respectively, showed positive, zero, negative.
Here are a few 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 positive } 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), it is possible to directly pass in the function name and the function name for the & operation because the function address is also taken when the function is called*/ 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]); }
相关文章推荐
- WowButtons with the GdiDrawStream function
- The function equals must be used with a prefix when a default namespace is not specified
- Function echartR with package recharts
- Trace and profile function calls with GCC
- Language Modeling with Gated Convolutional Networks
- Stack with Function min()
- Recipe 19.1. Writing a range-like Function with Float Increments
- error C3395: __declspec(dllexport) cannot be applied to a function with the __clrcall calling conv
- Fatal error: Uncaught exception 'PHPExcel_Exception' with message 'Multibyte function overloading in
- 关于expres模板引擎,Function,with
- Usage sample of unix signal to handle function call with a timeout value.
- C++:error C4996: 'std::_Uninitialized_copy0': Function call with parameters that may be unsafe
- How To Replace jQuery 1.9.1's $.parseJSON function with the implementation from jQuery 1.8.3
- 素数遍历方法比较(Find the prime number, with performance monitoring function)
- The function getUserId must be used with a prefix when a default namespace is not specified 解决办法
- C language tutorial Chapter fifth: function 3
- The function size must be used with a prefix when a default namespace is not specified
- Networks with Linear Activation Function
- react native 打包Ignoring return value of function declared with warn_unused_result attribute
- anaconda2下面安装opencv2.4.13.4完成----解决默认安装的问题----Thefunction is not implemented. Rebuild the library with Windows, GTK+ 2.x orCarbon support. If you are on Ubuntu or Debian, install libgtk2.0‑dev and pkg