qsort

qsort在 #include<stdlib.h>头函数下

qsort (数组名,数组长度,数组单位长度,排序方式要用一个到函数返回值);

例如:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int s[10000],n,i;

int cmp(constvoid *a, const void *b)

{

return(*(int *)a-*(int *)b);/*这里的(int *a定义了一个指向int型的指针,注意int *两边的括号不能少,然后(int *a前面加上*就表示取其指向的值。这里返回的是*(int *)a-*(int *)b,两个数相减的顺序跟函数形参顺序一样这样就会将数组按升序排序,反之如果是return(*(int *)b-*(int *)a),就会将数组按降序排列*/

}

void main()

{

scanf("%d",&n);

for(i=0;i<n;i++)

scanf("%d",&s[i]);

qsort(s,n,sizeof(s[0]),cmp);

for(i=0;i<n;i++)

printf("%d\n",s[i]);

}

                                       qsort常用于多级排序:

 

例如:

#include <stdio.h>

#include <stdlib.h>

struct node

{

double date;

int flag;

} s[100];

int i,n;

int cmp(constvoid *a,const void *b)

{

return(((struct node *)a)->date > ((struct node *)b)->date?1:-1);/*注意,这里的struct node*跟前面的int*,double*原理一样,都是一种指针类型,这里是自己定义的一个指向结构体的指针类型,故写法为struct 结构体名称 *,这里datedouble型数据,故不可能有相等情况出现,只需返回1-1即可*/

}

int main()

{

scanf("%d",&n);

for(i=0;i<n;i++)

{

s[i].flag=i+1;

scanf("%lf",&s[i].date);

}

qsort(s,n,sizeof(s[0]),cmp);

for(i=0;i<n;i++)

printf("%d %lf\n",s[i].flag,s[i].date);

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值