使用反向订货号

时间:2017-04-28 16:48:14

标签: c++

我要制作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);
}

}

2 个答案:

答案 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);