主要思想:随机生成一个数组a[],将数组 a[] 排序后,排序后的数组中的数据在原来数组中的位置所组成的一个序列即为1 到 n 的一个随机排列
源码:
#include"iostream"
#include"ctime"
#include"cstdlib"
#define MAX 20000
using namespace std;
struct element{ //用来排序的数据结构
int data; // 数据
int index; // 序号
};
int cmp(const void *a,const void *b); //升序排列
void rand_of_n(int a[],int n); //产生 1-n 的随机排列并存到 a[] 中
int main(){
int a[MAX];
int i,n=10;
rand_of_n(a,n);
for(i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}
int cmp(const void *a,const void *b){ // 升序排序
return((struct element*)a)->data - ((struct element*)b)->data;
}
void rand_of_n(int a[],int n){
int i;
struct element ele[MAX];
srand((int)time(0)); // 初始化