数组的随机打乱

数组的随机打乱

本篇随笔介绍一下一个小技巧:数组的随机打乱。

有两种方式,第一种是用STL里的random_shuffle函数,第二种是手写。

第一种:STL

就是介绍一下random_shuffle函数的用法。

传两个参数,表示数组的首尾元素即可。

random_shuffle(a+1,a+n+1);//打乱a数组(1-n)。

第二种:手写

手写函数比较简单,但是思想挺巧妙的,是一种随机化算法。

直接放代码,大家应该看就能看明白。

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)
        swap(a[i],a[(rand()%i)+1]);
}

差不多就这些。别怪我水博。

posted @ 2020-04-01 20:15  Seaway-Fu  阅读(1572)  评论(0编辑  收藏  举报