C++中如何交换字符串数组中的数据??急

本人新手。今天遇到了这样一个问题
一个二维数组 char b[MAX][LEN]
是用来存放姓名的数组 和另一数组 int a[50]按输入顺序对应
现在对a数组进行冒泡排序 于是需要b数组随a数组一起排序 如何做到?
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
if(a[j][3]<a[j+1][3])
{
temp1=a[j][3];
a[j][3]=a[j+1][3];
a[j+1][3]=temp1;
在这里需要交换吧b[j]与b[j+1]中的内容 }}

定义一个结构体,
struct str
{
int a[50];
char b[MAX][LEN];
}
然后根据a对结构体排序就可以

也可以用map或者multimap来实现
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-14
你的想法是对的。你的意思根本就不是要对b数组排序。
你的意思是a数组里面的数据与b数组的数据时一一对应的。
所以按照你说的就可以了啊。
但是b数组的数据存放方式你没说。。是不是直接交换b[j]和b[j+1]还不好说
应该是
b[j/MAX-1][j%MAX]与b[(j+1)/MAX-1][(j+1)%MAX]
我也不知道对不对。
第2个回答  2010-06-14
void Sort()
{
char name[MAX][LEN];//需要初始化
int a[50];//需要初始化
int n;//需要初始化

char temp[LEN];
int t;
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)
if(strcmp(name[i],name[j])<0)
{
strcpy(temp,name[i]);
strcpy(name[i],name[j]);
strcpy(name[j],temp);
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
第3个回答  2010-06-14
int record=1,N=49;char temp2[len];
for(i=0;i<=49;++i,--N) 冒泡有问题,冒49次
{
for(j=0;j<=N-1;++j) 每次冒N-- -1次
if(a[j]<a[j+1])
{
temp1=a[j];
a[j]=a[j+1];
a[j+1]=temp1;
在这里需要交换吧b[j]与b[j+1]中的内容
memove(temp2,b[j][len],len*sizeof(char));
memove(b[j][len],b[j+1][len],len*sizeof(char));
memove(b[j+1][len],temp2,len*sizeof(char));
}
}
不明白你为什莫不用struct呢?
或者map容器。。
第4个回答  2010-06-14
复制a到另一个数组,对其排序,记下排序后的下标
排前 1 2 3 4 5
拍后 5 2 3 1 4
用这个记录下标的数组进行操作,只能提示到这里了

再想想也不用这么麻烦呀,只要对a排序中比较后,一次操作a b两个数组就可以了呀,不知道你哪里不明白

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网