#include <stdlib.h>
#include <iostream>
using namespace std;
#define Maxnum 10000
class RandomArray{
int arraynum[Maxnum];
int length; public:
RandomArray( int num ){
length=num;
for(int i=0; i < length ; i++ ){
arraynum[i]=i+1; }
}
void random_in_place(){
for(int i=0; i< length ; i++ ){ swap_random(i); }
}
void print(){
for(int i=0;i < length ; i++)
{ cout<<arraynum[i]<<' '; }
}
private: void swap_random(int i) {
int j=random(i,length-1);
int temp;
temp=arraynum[i];
arraynum[i]=arraynum[j];
arraynum[j]=temp;
}
int random(int i, int len)
{ int modnum=len-i+1; int j=rand()%modnum; return (j+i); }
};
int main()
{ RandomArray rarray=RandomArray(10); for (int i=0; i < 9 ; i++){ rarray.random_in_place(); rarray.print(); cout<<endl; }
for (;;) { } return 0;}
#############################
思想: 洗牌 O(n) 写的比较囧