怎样用sort和qsort对二维数组排序

怎样用sort和qsort对二维数组排序
怎样用他们两个对二维数组的某一维排序,比如对二维数组a[100][2]的第一列排序,排好的结果放到一维数组b[100]里面去.(最好还能实现在第一列内有元素相同时,能够根据第二列的元素决定放在b[100]里的顺序)
我说错了,我要对二维数组a[100][2]的第一列排序,每行都随着第一列的元素一起移动
你换成结构体吧
struct In {
int x; int y;
}s[100];
//按照清迹x从小到大排答肆并序,当x相等雹兄时按照y从小到大排序
int cmp( const void *a , const void *b )
{
struct In *c = (In *)a;
struct In *d = (In *)b;
if(c->y != d->y) return c->x - d->x;
else return c->y ? d->y;
}
qsort(s,100,sizeof(s[0]),cmp);
先把要排的一列存到 b[100] 里,用 qsort 对 b 排队。
排好后,打印拦蚂伏也简携好,赋回 a 也好,自己写吧物镇。

#include
#include

int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}

void main()
{
int a[100][2];
int i,b[100];

for (i=0;i<100;i++) b[i] = a[i][0]; // 要排的数放入b.

qsort( &b[0], 100, sizeof( int ), compare ); // b 里100个数 排队

for (i=0;i<100;i++) printf("%d ",b[i]); // 打印结果

}
用qsort()排序时祥孝弯,关键是比较函慎颤数的编写,如果你的比较函数编写的谨闷合适,qsort()可以对二维数组排序。
sort好像C里没有吧,C++里的吧!!
用指针
← 上一篇: 下一篇: →