我有个二维数组,对应一张数据表格,我该如何进行主次列要排序?
针对其中一列排序我可以做得到,但同时对两列排序不知从何下手,比如以第2列为主要排序,第1列为次要排序。
int a[50][2]; // 对应一张50行2列的表格
// 第2列为主要排序,第1列为次要排序。
我有个二维数组,对应一张数据表格,我该如何进行主次列要排序?
针对其中一列排序我可以做得到,但同时对两列排序不知从何下手,比如以第2列为主要排序,第1列为次要排序。
int a[50][2]; // 对应一张50行2列的表格
// 第2列为主要排序,第1列为次要排序。
N改为50,数据替换{{3,1},{1, 2},{1,1}}即可。敲代码不容易求采纳!
#include <stdio.h>
#define N 3
int sortd(int a[][2],int len, int len1)
{int i=0;
int j;
int t;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-i-1;j++)
{
if(a[j][1]>a[j+1][1]||((a[j][1]==a[j+1][1])&&(a[j][0]>a[j+1][0])))
{
t=a[j][0];
a[j][0]=a[j+1][0];
a[j+1][0]=t;
t=a[j][1];
a[j][1]=a[j+1][1];
a[j+1][1]=t;
}
}
}
}
int main(int argc, char *argv[])
{
int a[N][2]={{3,1},{1, 2},{1,1}};
int i,j;
sortd(a,N,2);
for(j=0;j<N;j++){
for(i=0;i<2;i++)
printf("%d ",a[j][i]);
printf("\n");
}
return 0;
}