在进行第i次迭代时,元素A[i]是从元素A[i]到A[n]中随机选取的
伪代码
c++代码
#include <iostream>
#include<time.h>
using namespace std;
#define N 20//数组大小为20
void randomizeInPlace(int array[],int len);
int main()
{
int Array[N];
for(int i=0;i<N;++i)
Array[i]=i+1;//数组赋初值
cout<<"原Array数组顺序为:"<<endl;
for(int i=0;i<N;++i)
cout<<Array[i]<<" ";
cout<<endl<<"randomizeInPlace随机化后Array数组顺序为:"<<endl;
randomizeInPlace(Array,N);
for(int i=0;i<N;++i)
cout<<Array[i]<<" ";
return 0;
}
void randomizeInPlace(int array[],int len)
{
srand(time(NULL));
for(int i=0;i<len;++i)
{
int randomNumber,temp;
randomNumber=i+rand()%(len-i);//生成一个从i到len-1的随机数
temp=array[i];//交换
array[i]=array[randomNumber];
array[randomNumber]=temp;
}
}
第一次运行结果
第二次运行结果