首页 新闻 会员 周边 捐助

两组数据相互对应着,怎么把左边的数据进行排序,然后右边的数据跟排序后的左边的数据一样对应着

1
悬赏园豆:10 [已解决问题] 解决于 2014-12-02 16:26
 如:
2 1
1 3
4 5
然后我i想把左边那一列排序,但是右边的数据要对应着,就是
1 3
2 1
4 5 
M_Kepler的主页 M_Kepler | 初学一级 | 园豆:177
提问于:2014-11-29 14:28
< >
分享
最佳答案
0
 1 #include <iostream>
 2 #include <algorithm>//sort函数需求的STL库
 3 #include <memory.h>//memset函数需求的头文件
 4 #define MAX_SIZE 100000//定义最大允许的空间
 5 using  std::cin;
 6 using  std::cout;
 7 using  std::endl;
 8 using  std::sort;
 9 struct MyList
10 {
11     int a;
12     int b;
13 };//定义结构体
14 
15 MyList mylist1[MAX_SIZE];
16 
17 bool cmp(MyList x1,MyList x2)//定义排序方法
18 {
19     return x1.a<x2.b;
20 }
21 
22 void fInitialize(MyList *x)//数组初始化,快速填充0
23 {
24     memset(x,0,sizeof(MyList));
25 }
26 
27 int main()
28 {
29     int iListSize=0;
30     while(cin>>mylist1[iListSize].a>>mylist1[iListSize].b)
31     {
32         iListSize++;
33     }
34     sort(mylist1,mylist1+iListSize,cmp);//需要排序的对象,需要排序的范围,排序方法
35     for(int i=0;i<iListSize;i++)
36     {
37         cout<<mylist1[i].a<<" "<<mylist1[i].b<<endl;
38     }
39     return 0;
40 
41 }

根据你的测试数据写的,因为你没说具体行数,所以采用这种任意行数的输入方式;

实际上排序方式有很多,我这个代码是C++ 的STL中的快排,内置的是堆排序,不是最快的方法,但是比冒泡快

收获园豆:5
C4ISR | 菜鸟二级 |园豆:214 | 2014-11-29 15:40

是用结构体来啊

M_Kepler | 园豆:177 (初学一级) | 2014-11-29 15:51

@M-Kepler: 方法很多,这个是比较易于理解的方法

C4ISR | 园豆:214 (菜鸟二级) | 2014-11-29 16:25
其他回答(1)
0

两个一起冒泡....

收获园豆:5
只会造轮子 | 园豆:2274 (老鸟四级) | 2014-11-29 14:31

一起冒泡?有其他方法吗?我想的是这样:cin>>i>>s[i];这样的话就可以对应起来,可是没办法做到排序

支持(0) 反对(0) M_Kepler | 园豆:177 (初学一级) | 2014-11-29 14:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册