【题目】
要求输入一组数据,输出的结果为这组数据的随机排列。
【解题思路】
1. 调用头文件algorithms中的random_shuffle函数。该函数的本质就是生成随机位置,不断交换,使得数据重新排列。
2. 产生随机数,结合swap函数实现数组的重新排列。
【代码】
#include <iostream>
#include <vector>
#include <algorithm>
#include <time.h>
#include <stdlib.h>
using namespace std;
vector<int> shuffle(vector<int> &A){
int n = A.size();
vector<int> res(A);
for (int i = n-1; i>= 0; --i) {
srand((unsigned int)time(NULL));
int loc = rand()%(i+1);
if (loc != i) {
swap(res[i], res[loc]);
}
}
return res;
}
int main()
{
int n = 10;
vector<int> A;
for (int i = 0; i < n; ++i)
A.push_back(i);
vector<int> A1(A);
cout << "origin" << endl;
for (int i = 0; i < n; +