c语言之qsort(快排)
1.先看函数原型
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
参数描述:
1. 1. base -- 指向要排序的数组的第一个元素的指针。
2. nitems -- 由 base 指向的数组中元素的个数。
3. size -- 数组中每个元素的大小,以字节为单位。
4. compar -- 用来比较两个元素的函数。
2.可排序类型:
在读者看来这个函数功能非常之强大,它几乎可以实现所有的排序,例如字母,数字,等等,但其规则需要你通过compar函数自己指定,下面以数字和字母组成的字符串来进行举例(排序规则按ascall表进行排序,即数字在前,字母在后):
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int compare(const void * ptr1,const void *ptr2){
const char * a=( const char *)ptr1;
const char * b=( const char *)ptr2;
if(strcmp(a,b)==0){
return 0;
}
else if(strcmp(a,b)>0){
return 1;
}
else {
return -1;
}
}
int main(int argc, char *argv[])
{
char a[]="ascjksajfhjdsb145654664132465413241vdngfuDA45zvcgJADBfc565161164vASKJBcnmvdGKAJHDB";
size_t size=sizeof (a)/sizeof (char);
qsort(a,size-1,sizeof (char),compare);
for(int i=0;i<size-1;i++){
printf("%c ",a[i]);
}
//printf("\n%d\n",sizeof (char *));
}