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[][] 二维数组排序的主要内容,如果未能解决你的问题,请参考以下文章