函数 qsort 学习
简介
qsort函数C语言编译器函数库自带的快速排序函数, 根据二分法写的
头文件为:
stdlib.h
函数原型:
void qsort(void*base, size_t num, size_t width, int( * compare)(const void*,const void*))
参数:
base : 待排序数组首地址
num : 数组中待排序元素数量
width : 数组中每个元素的大小,以字节为单位
compare : 指向函数的指针,用于确定排序的顺序,记住传入的是地址!!!
int compar(const void *p1, const void *p2);
如果compar返回值小于0(< 0),那么p1所指向元素会被排在p2所指向元素的左面;
如果compar返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定;
如果compar返回值大于0(> 0),那么p1所指向元素会被排在p2所指向元素的右面。
代码示例
/*对输入的字符串进行排序, 例如 befdca -> abcdef*/
#include <stdio.h>
#include <stdlib.h>
int charcomp(char *x, char *y)
{
return *x - *y;/*x-y 为升序, y-x为降序*/
}
#define WORDMAX 100
int main(void)
{
char word[WORDMAX], sig[WORDMAX];
while(scanf("%s", word) != EOF)
{
strcpy(sig, word);
qsort(sig, strlen(sig), sizeof(char), charcomp);
printf("%s-%s\n", sig, word);
}
return 0;
}