二维数组快速排序(sort+qsort)

二维数组快速排序

 

  qsort是c中快速排序,如果简单的一维数组排序,想必大家的懂。现在看一下二维数组的排序,虽然可以冒泡但是太费时间了,我们这里使用qsort来快速排序,看代码应该看得懂吧。

代码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 struct node
 4 {
 5     int x,y;
 6 }a[10005];
 7 int cmp(const void *a,const void *b)    //要转化为结构体类型
 8 {
 9     struct node *c = (node*)a;
10     struct node *d = (node*)b;
11     return c->y - d->y;
12 }
13 int main()
14 {
15     int i,m,n;
16     scanf("%d",&m);
17     while(m--)
18     {
19         scanf("%d",&n);
20         for(i=0; i<n; i++)
21             scanf("%d%d",&a[i].x,&a[i].y);
22         qsort(a,n,sizeof(a[0]),cmp);    //记得是sizeof(a[0])

 

 

  sort是c++中的快速排序,不多说,直接上代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 struct node
 6 {
 7     int x,y;
 8 }a[10005];
 9 bool cmp(node a,node b)
10 {
11     return a.y < b.y;
12 }
13 int main()
14 {
15     int m,n,i,k,ans;
16     scanf("%d",&m);
17     while(m--)
18     {
19         scanf("%d",&n);
20         for(i=0; i<n; i++)
21             scanf("%d%d",&a[i].x,&a[i].y);
22         sort(a,a+n,cmp);

 

posted @ 2018-09-02 22:12  ˇskyblue  阅读(2167)  评论(0编辑  收藏  举报