美文网首页
洗牌算法:打乱一个数组的顺序

洗牌算法:打乱一个数组的顺序

作者: Kyunban | 来源:发表于2017-04-22 21:29 被阅读0次

首先从所有元素中随机选取一个与第一个元素进行交换,然后在第二个之后选择一个元素与第二个交换,直到最后一个元素。以下用C++编程来说明一下。

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

using namespace std;

void random(int a[],int n){

int index, tmp, i;

srand(time(NULL));

for(i=0; i<n;i++){

index=rand()%(n-i)+i;

if(index!=i){

tmp=a[i];

a[i]=a[index];

a[index]=tmp;

}

}

}

int main(){

int a[100];

int i;

for(i=0; i<100; i++)

a[i]=i;

random(a, 100);

for(i=0; i<100; i++)

cout<<a[i]<< "  ";

cout<<endl;

return 0;

}

顺序也可以从后往前:

#include <iostream>

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

using namespace std;

void random(int a[],int n){

int index, tmp, i;

srand(time(NULL));

for(i=n-1;i>0;i--){

index=rand()%i;

tmp=a[i];

a[i]=a[index];

a[index]=tmp;

}

}

int main(){

int a[100];

int i;

for(i=0; i<100; i++)

a[i]=i;

random(a, 100);

for(i=0; i<100; i++)

cout<<a[i]<<"  "

cout<<endl;

return 0;

}

相关文章

  • Golang洗牌算法,抢红包算法

    本文为转载,原文:Golang洗牌算法,抢红包算法 1. 洗牌算法 洗牌算法,即将原来的顺序打乱,组成新的随机排序...

  • 洗牌算法:打乱一个数组的顺序

    首先从所有元素中随机选取一个与第一个元素进行交换,然后在第二个之后选择一个元素与第二个交换,直到最后一个元素。以下...

  • LeetCodeDay23 —— 打家劫舍

    384. 打乱数组 描述 打乱一个没有重复元素的数组。 示例 思路 洗牌算法,每次从当前数组中随机一个元素与末尾元...

  • 一天一算法 - 基础排序

    准备 在实现排序算法之前,先介绍将用到的几个函数。比如说为了将数组中数字的顺序打乱,我们可能需要一个洗牌函数,为了...

  • 2020-03-07 刷题4 设计,数学

    384 打乱数组 标签:洗牌算法,数组本题看得我一脸懵bo,后来看了评论区才知道是要用洗牌算法,也就是保证shuf...

  • Leetcode_384_打乱数组_hn

    题目描述 打乱一个没有重复元素的数组。 示例 解答方法 方法一:洗牌算法 思路 https://leetcode-...

  • Java 洗牌算法

    嗨!其实我最早使用洗牌算法是在一次需要做打乱一个数组顺序时接触到的,那时想了好久没有想到什么好的办法,自己写了一个...

  • 2018-11-24 Shuffle an Array

    题目描述: 打乱一个没有重复元素的数组。 解法: Knuth洗牌算法:遍历一次数组, 在第 i 个位置的时候, 随...

  • 算法:设计问题

    384 打乱数组洗牌算法:Fisher-Yates Shuffle每个元素被放置在新数组中的第i个位置概率是参考:...

  • Fisher–Yates shuffle洗牌算法

    最近需要做一个小游戏,游戏的第一个需求就是要实现一个算法:随机打乱一个数组,也可以称之为洗牌。 现实生活中,洗牌的...

网友评论

      本文标题:洗牌算法:打乱一个数组的顺序

      本文链接:https://www.haomeiwen.com/subject/ybdszttx.html