用c++对我的2d数组进行排序
Sorting my 2d array in c++
我的家庭作业程序必须将到达时间和突发时间的随机数写入文件中。然后在它们被写入之后,它读取文件并对内容进行排序。
我认为建立一个2d阵列将是我实现这一目标的最简单方法。但我不确定如何实现我的排序,这样,如果到达时间交换了位置,那么到达的突发时间也会随之而来。
我觉得我的措辞很糟糕,但一个基本的例子是:
array[3][10] > array[2][23]
因此,由于第二个数组的到达时间较早,我需要它的到达2和突发23都在array[3][10]
之前移动,但我需要这样做并比较100个输入。
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <fstream>
const int max = 100;
using namespace std;
int main()
{
multimap<int [][]> myMap;
int randomBurst[max];
int arrivalTime[max];
int line[max][2];
int first = 0;
for (int i = 0; i < 100; i++)
{
if (i < 100)
{
ofstream write("Schedule.txt", ios::app);
randomBurst[i] = rand() % 1000;
arrivalTime[i] = rand() % 1000;
write << arrivalTime[i] << " " << randomBurst[i] << endl;
}
}
ifstream read("Schedule.txt");
for (int i = 0; i <= max; i++)
{
for (int j = 0; j < 2; j++)
{
read >> line[i][j];
cout << line[i][j] << " " ;
}
cout << endl;
}
cout << endl;
cout << endl;
for (int i = 0; i <= max; i++)
{
for (int j = 0; j < 2; j++)
{
myMap.insert(pair<int[][]>(line[i][j]);
}
cout << endl;
}
system("pause");
return 0;
}
我的代码在读取写入的文件内容后正确地设置了数组,但我有点迷失了应该实现的排序。
说到这里,主要是留下评论,以便在我的笔记本电脑上更快地找到这个问题。
正如我在评论中所说,如果你想要一个按键值预先排序的2D"数组",最快的方法就是使用映射容器。,如果你真的需要对内部点进行排序,并且你将在其中使用多个条目,比如条目2,30,12。。。您可以构建向量或数组的映射,也可以使用多映射。对这个数据结构不太确定,因为我从来没有真正的理由使用它。此处引用http://www.cplusplus.com/reference/map/multimap/
以上内容将为您提供为您所做的排序,我推荐向量的原因是它内部缺乏顺序,并且不确定"是否爆发?"也要订购。
编辑:忘了提一下,地图上不会有超过一个给定值的键,所以如果你再次输入上面的多个点,那么你会的。如果像以前一样实现,请覆盖它。
编辑:所以这或多或少是我认为我已经解决的问题,但你正在以一种非常间接的方式解决这个问题,这很难诚实地遵循。
#include <map>
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <fstream>
using namespace std;
const int MAX = 100;
int main()
{
multimap<int,int> myMap;
int randomBurst[100];
int arrivalTime[100];
int line[100][2];
int first = 0;
for (int i = 0; i < 100; i++)
{
if (i < 100)
{
ofstream write("Schedule.txt", ios::app);
randomBurst[i] = rand() % 1000;
arrivalTime[i] = rand() % 1000;
write << arrivalTime[i] << " " << randomBurst[i] << endl;
}
}
ifstream read("Schedule.txt");
for (int i = 0; i <= 100; i++)
{
for (int j = 0; j < 2; j++)
{
read >> line[i][j];
cout << line[i][j] << " " ;
}
cout << endl;
}
// cout << endl;
// cout << endl;
for (int i = 0; i < 100; i++)
{
for (int j = 0; j < 2; j++)
{
//Attain the value in the index, and the held value within it.
myMap.insert(pair<int, int> (line[i][j], line[i][j]));
}
cout << endl;
}
// system("pause");
return 0;
这修复了插入点,仅仅因为你给它一个数组并不意味着程序会把它作为一对,因为第一个索引本身就是指向另一个数组的点。等等。我建议从一个映射对象开始,因为多映射会让事情变得有点烦人,如果你熟悉向量容器,那么在映射中使用它来记录多个值。
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 显示错误输出的简单数组排序程序
- 为什么我的排序算法会更改数组值
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 合并排序不排序自创建数组类 c++
- 带有枚举方向/类型的气泡排序结构数组
- 为什么指针在对二维数组进行排序时无法正常工作?
- 排序并行数组
- 如何在数组 c++ 中对字符串进行排序
- 为什么在此排序算法实现中,向量明显比数组慢?
- 如何对不在数组中的变量进行排序?
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 按字母顺序对结构内数组变量中的名称进行排序
- 使用排序函数 c++ 对字符数组进行排序
- 使用 std::sort 对二维 c 数组进行排序
- 使用STL对用户输入数组进行排序的错误有什么解决方案吗?
- 使用 std::sort 对 C 样式的 2D 数组进行部分排序
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- 对 0 、1 和 2 的数组进行排序