随机排列内容

该算法将获取一个数组并重新排列数组的内容。它将生成数组元素的随机排列。

为了解决这个问题,我们将交换从最后一个索引开始的元素,以在数组中随机生成一个索引。

输入输出

Input:

An array of integers: {1, 2, 3, 4, 5, 6, 7, 8}

Output:

Shuffle of array contents: 3 4 7 2 6 1 5 8 (Output may differ for next run)

算法

randomArr(array, n)

输入:数组,元素数。

输出:随机排列数组的内容。

Begin

   for i := n – 1 down to 1, do

      j := random number from 0 to i

      swap arr[i] and arr[j]

   done

End

示例

#include <iostream>

#include<cstdlib>

#include <ctime>

using namespace std;

void display(int array[], int n) {

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

      cout << array[i] << " ";

}

void randomArr ( int arr[], int n ) {           //generate random array element

   srand (time(NULL));                 //use time to get different seed value to start

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

      int j = rand() % (i+1);           //randomly choose an index from 0 to i

      swap(arr[i], arr[j]);            //swap current element with element placed in jth location

   }

}

int main() {

   int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};

   int n = 8;

   randomArr(arr, n);

   display(arr, n);

}

输出结果

4 7 8 2 6 3 5 1

以上是 随机排列内容 的全部内容, 来源链接: utcz.com/z/321654.html

回到顶部