gpt4 book ai didi

c++ - 在 C++ 中对我的二维数组进行排序

转载 作者:行者123 更新时间:2023-11-30 05:35:07 25 4
gpt4 key购买 nike

我的作业程序必须将到达时间和突发时间的随机数写入文件。然后在写入之后,它会读取文件并对内容进行排序。

我认为设置一个二维数组对我来说是最简单的方法。但我不确定如何实现我的排序,以便如果到达时间交换位置,那么该到达的突发时间也会随之而来。

我觉得我的措辞很糟糕,但一个基本的例子是:

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;
}

我的代码在读取写入的文件内容后正确地设置了我的数组,但我有点迷失了我应该为某种排序实现的东西。

最佳答案

好吧,留下这个评论主要是为了能够在我的笔记本电脑上更快地找到这个问题。

就像我在评论中所说的那样,如果你想要一个预排序的键值二维“数组”,最快的方法是使用 map 容器,如果你真的需要内部点有序,您将在其中使用多个条目,假设条目 2,30 2,12 ...您可以构建 vector 图或数组,或使用 Multimap。不太确定这个数据结构,因为到目前为止我还没有真正有理由使用它。此处引用http://www.cplusplus.com/reference/map/multimap/

上面将为您提供排序,而我推荐 vector 的原因是它内部没有顺序,不确定是否“突发”?也将被订购。

编辑:忘了提,一张 map 不会包含任何给定值的多个键,所以如果你再次在上面输入多个点,那么你会的。如果像以前一样实现东西,覆盖东西。

编辑:所以这或多或少是我认为我有的解决方法,但你正在以一种非常间接的方式解决这个问题,这很难诚实地遵循。

    #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;

这修复了插入点,只是因为您给它一个数组并不意味着程序会将其作为一对,因为第一个索引本身就是指向另一个数组的一个点。等等。我建议从 map 对象开始,因为多重 map 让事情变得有点烦人,如果您熟悉 vector 容器,那么在 map 中使用它来记录多个值。

关于c++ - 在 C++ 中对我的二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33979010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com