以对整型数组排序为例:
头文件
#include<stdlib.h>
函数体
intcmp(const void *a, const void *b)
{
return(*(int *)a-*(int *)b);
主函数
void main()
{ .int s[100];
qsort(s,n,sizeof(s[0]),cmp);}
PS:
1、如果排序的是字符型数组
则在函数体内return(*(int *)a-*(int *)b); 改成 return(*(char *)a-*(char*)b);
其他类型同理
2、要对其从s[i]开始的m个元素进行排序,只需要在第一个和第二个参数上进行一些修改:qsort(&s[i],m,sizeof(s[i]),cmp);
代码示例:
#include <stdlib.h> #include <string.h> #include <stdio.h> int comp(const void *a,const void *b);//函数声明 int main( ) { int i; int a[10]={21,56,78,12,36,58,69,44,23,11}; qsort( a, 10, sizeof(int),comp);//调用qsort(),其中第一个参数是数组名字,第二个参数是数组元素个数, //第三个参数是元素所占字节数,第四个是比较方式 for( i = 0; i < 10; ++i ) printf( " %d ", a[i] ); printf( "\n" ); return 0; } int comp(const void* a,const void* b)//定义数据的比较方式是从小到大排序。 { int *x=(int *)a; int *y=(int *)b; return *x-*y; }