C++ 程式,實現斐雪-耶滋演算法對陣列進行洗牌
斐雪-耶滋演算法生成陣列元素的隨機排列,換句話說它隨機打亂陣列中的所有元素。由於斐雪-耶滋演算法是無偏的,因此陣列的所有排列都具有同等機率。
一個在 C++ 中實現斐雪-耶滋演算法以對陣列進行洗牌的程式如下所述 −
示例
#include <iostream>
#include <t;stdlib.h>
using namespace std;
int main() {
int n;
cout << "Enter the array size: "<<endl;
cin >> n;
int arr[n], arr1[n], index_arr[n];
int index;
cout << "Enter the array elements: "<<endl;
for (int i = 0; i < n; i++)
cin >> arr[i];
for (int i = 0; i < n; i++)
index_arr[i] = 0;
for (int i = 0; i < n; i++) {
do {
index = rand() % n;
}
while (index_arr[index] != 0);
index_arr[index] = 1;
arr1[i] = arr[index];
}
cout<<"The shuffled array is: ";
for (int i = 0; i < n; i++)
cout << arr1[i] << " ";
return 0;
}輸出
上述程式的輸出如下所示
Enter the array size: 10 Enter the array elements: 1 2 3 4 5 6 7 8 9 10 The shuffled array is: 4 7 8 6 3 10 2 1 9 5
在上述程式中,系統將向用戶索取陣列的大小和陣列。如下所示 −
cout << "Enter the array size: "<<endl; cin >> n; int arr[n], arr1[n], index_arr[n]; int index; cout << "Enter the array elements: "<<endl; for (int i = 0; i < n; i++) cin >> arr[i];
獲得陣列後,將 index_arr[] 初始化為 0。然後使用 rand() 函式將 arr[] 的值隨機儲存到 arr1[] 中。以下程式碼片段展示了這一過程 −
for (int i = 0; i < n; i++) {
do {
index = rand() % n;
}
while (index_arr[index] != 0);
index_arr[index] = 1;
arr1[i] = arr[index];
}最後顯示經過洗牌的陣列。如下所示 −
cout<<"The shuffled array is: "; for (int i = 0; i < n; i++) cout << arr1[i] << " ";
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP