算法整理——洗牌算法
1.算法原理
1)从N张牌中随机选取一张牌k,将牌arry[N]与arry[k]交换位置
2)在剩下的牌中随机选取一张牌j,与位置为N-i(i为交换次数)的牌交换位置。
3)重复步骤2直到没有剩下的牌
2.代码`
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
#define N 10
#define random(a,b) (rand()%(b-a+1)+a) //取[a,b]中任意整数
void swap(int &x,int &y){
int m;
m=x;
x=y;
y=m;
}
int main(){
srand((int)time(NULL));
cout<<time(NULL)<<endl;
int arry[N]={0,1,2,3,4,5,6,7,8,9};
for(int i = N-1;i>=0;i--){
swap(arry[i],arry[random(0,i)]);
}
for(int i=0;i<N;i++){
cout<<arry[i]<<" ";
}
}
##洗牌算法