我要制作3个数组,一个是randnumbers,一个是有序的,一个是相反的顺序。我的逆序数组不起作用。 Size,randOrderArr,inOrderArr和revOrderArr都在我的SortingClass类中。这是我的代码,如何修复它以使revOrderArr成为具有反向数字的数组?
SortingClass::SortingClass(int si, int sm, int la){
size=si;
randArr = new int[si];
inOrderArr = new int[si];
revOrderArr = new int[si];
srand(time(NULL));
for(int i=0; i<si; i++){
//srand(time(NULL));
int randnum = rand()%(la-sm+1)+sm;
randArr[i]=randnum;
inOrderArr[i]=(sm+i);
revOrderArr[i]=(la-1-i);
}
}
答案 0 :(得分:0)
如果你的目标是创建一个随机数组和另外两个代表阵列的排序(升序和降序)版本的数组,使用C ++ 11,你可以这样做:
#include <algorithm>
#include <iterator>
#include <algorithm>
#include <numeric>
#include <random>
#include <vector>
void fillRandomArrays(
int arraySize,
int minValue,
int maxValue,
std::vector<int>& unsorted,
std::vector<int>& sortedAscending,
std::vector<int>& unsortedDescending
) {
std::random_device randomDevice;
std::mt19937 mersenneTwister(randomDevice);
std::uniform_int_distribution<int> distribution(minValue, maxValue);
//fill the random unsorted array
std::generate_n(std::back_inserter(unsorted), arraySize, [&]() {
return distribution(mersenneTwister);
});
//fill the sorted ascending array
std::copy(std::begin(unsorted), std::end(unsorted), std::back_inserter(sortedAscending));
std::sort(std::begin(sortedAscending), std::end(sortedAscending), std::less<int>());
//fill the sorted descending array
std::copy(sortedAscending.rbegin(), sortedAscending.rend(), std::back_inserter(sortedDescending));
}
答案 1 :(得分:0)
您使用了错误的填充等式revOrderArr
。
改为使用revOrderArr[i]=(la-i);
。