sort int[][] 二维数组排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sort int[][] 二维数组排序相关的知识,希望对你有一定的参考价值。

参考技术A 今天才发现Arrays.sort 可以直接对二维数组进行排序,排序方法如下

给出一个图的表示方式graph, 每一行的第三个数是两个点之间的权重(weight),然后对权重进行排序。那么

就可以直接排序了。这种方法简单便捷,以前以为只能通过pq的方式来实现。现在有更多的选择了。

二维数组快速排序(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);

 

以上是关于sort int[][] 二维数组排序的主要内容,如果未能解决你的问题,请参考以下文章

Java对二维数组进行排序及源码分析

Vector容器 二维数组sort()排序

c++排序二维数组编译失败

python 二维数组排序

PHP二维数组排序

javascript二维数组怎样排序