1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4
5
6 int a[10]={1,9,5,6,7,4,1,5,8,3};
7 typedef struct
8 {
9 double x;
10 double y;
11 }b;
12 //一维数组的排序(整形)
13 int comp(const void *p,const void *q)
14 {
15 return *(int *)p>*(int *)q ? 1:-1;//从小到大
16
17 /* return -(*(int *)p-*(int *)q);//从大到小
18 return *(int *)p>*(int *)q ? 1:-1;//从小到大
19 */
20 }
21 //一维数组的排序(double型的要注意了)
22
23
24 double in[100];
25
26 int cmp( const void *a , const void *b )
27 {
28 return *(double *)a > *(double *)b ? 1 : -1; //直接返回的话可能会有浮点误差,造成错误的判断
29 }
30
31 int cmp1(const void *p,const void *q)
32 {
33 return (*(b*)p).x>(*(b*)q).x?1:-1;
34
35 }
36 //按照x从小到大排序,当x相等时按照y从大到小排序
37 int cmp2(const void *p,const void *q)
38 {
39 b *c=(b*)p;
40 b *d=(b*)q;
41 if(c->x!=d->x) return c->x>d->x?1:-1;
42 else return d->y>c->y?1:-1;
43 }
44
45
46 int cmp3(const void *p,const void *q)
47 {
48 return strcmp((*(Node *)p).str,(*(Node *)q).str);
49 }
50
51 int main()
52 {
53 int i;
54 /*qsort(a,10,sizeof(int),comp);
55 for(i=0;i<10;i++)
56 printf("%d ",a[i]);*/
57 b t[5];
58 t[0].x=0;
59 t[0].y=4;
60 t[1].x=0;
61 t[1].y=0;
62 t[2].x=5;
63 t[2].y=8;
64 t[3].x=5;
65 t[3].y=1;
66 t[4].x=2;
67 t[4].y=7;
68 qsort(t,5,sizeof(b),cmp2);
69 for(i=0;i<5;i++)
70 printf("%.0lf %.0lf\n",t[i].x,t[i].y) ;
71
72
73 return 0;
74 }