C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

配列シャッフリング用のFisher-Yatesアルゴリズムを実装するC++プログラム


Fisher-Yatesアルゴリズムは、配列要素のランダムな順列を生成します。つまり、配列のすべての要素をランダムにシャッフルします。フィッシャー-イェーツアルゴリズムは偏りがないため、配列のすべての順列は同じように発生する可能性があります。

C++で配列シャッフルするためのFisher-Yatesアルゴリズムを実装するプログラムは次のとおりです-

#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] << " ";

  1. 最適なページ置換アルゴリズムのためのC++プログラム

    与えられたページ番号とページサイズ。タスクは、最適なページ置換アルゴリズムを使用してメモリブロックをページに割り当てるときのように、ヒットとミスの数を見つけることです。 最適なページ置換アルゴリズムとは何ですか? 最適なページ置換アルゴリズムは、ページ置換アルゴリズムです。ページ置換アルゴリズムは、どのメモリページを置換するかを決定するアルゴリズムです。最適なページ置換では、実際には実装できませんが、近い将来に参照されないページを置換しますが、これは最適であり、ミスが最小限であり、最適です。 例を使って図式的に説明して理解しましょう。 ここで、1、2、3を割り当てた後、メモリが

  2. 配列要素の乗算のためのC++プログラム

    整数要素の配列で与えられ、タスクは配列の要素を乗算して表示することです。 例 Input-: arr[]={1,2,3,4,5,6,7} Output-: 1 x 2 x 3 x 4 x 5 x 6 x 7 = 5040 Input-: arr[]={3, 4,6, 2, 7, 8, 4} Output-: 3 x 4 x 6 x 2 x 7 x 8 x 4 = 32256 以下のプログラムで使用されるアプローチは次のとおりです − 一時変数を初期化して、最終結果を1で格納します ループを0からnまで開始します。nは配列のサイズです 最終結果を得るには、tempの値にarr[i]を掛け続