首頁 >後端開發 >C++ >重新排列一個數組,如果在C++中,'arr'是'j',則使'arr'變為'i'

重新排列一個數組,如果在C++中,'arr'是'j',則使'arr'變為'i'

王林
王林轉載
2023-09-18 10:29:05846瀏覽

重新排列一個數組,如果在C++中,arr是j,則使arr變為i

我們被給定一個正整數類型的數組,假設是arr[],它的大小可以任意給定,數組中的元素的值應該大於0但小於數組的大小。任務是重新排列 一個數組,如果 arr[j] 是“j”,那麼 arr[j] 就變成“i”並印出最終結果。

讓我們來看看這種情況的各種輸入輸出場景- h2>

輸入− int arr[] = {3, 4, 1, 2, 0}

輸出− 排列前的陣列: 3 4 1 2 0 重新排列數組,使arr[j] 變成i,如果arr[i] 為j,則為: 4 2 3 0 1

解釋− 我們得到一個大小為的整數數組6 以及數組中值小於6 的所有元素。現在,我們將重新排列數組,即 arr[1] 為 4,arr[4] = 1 ; arr[2] 為 1,arr[1] = 2; arr[3] 是 2、arr[2] = 3; arr[4]為0,arr[0]=4。因此,最終的數組為 4 2 3 0 1。

輸入t− int arr[] = {2, 0, 1, 3}

輸出− 排列前的陣列:2 0 1 3 重新排列數組,使arr[j] 變成i,如果arr[i] 為j,則為: 1 2 0 3

解釋− 我們得到一個大小為6 的整數數組且數組中所有元素的值小於6。現在,我們將重新排列數組,即 arr[0] 為 2,arr[2] = 0 ; arr[1] 為 0,arr[0] = 1; arr[2] 是 1, arr[1] = 2; arr[3] is 3, arr[3] = 3. 因此,最終的陣列是 1 2 0 3。

下面程式中所使用的方法如下

  • 輸入整數型元素的數組,並計算數組的大小。

  • 在進行排列之前列印數組,並呼叫函數Rearrangement(arr, size)

  • 在函數Rearrangement(arr, size)中

    • 建立一個整數型別值的陣列ptr[],大小與陣列arr[]相同。

    • 開始循環FOR,從i到0,直到i小於size。在循環內,將ptr[arr[i]]設定為i。

    • 開始循環FOR,從i到0,直到i小於size。在循環內,將arr[i]設定為ptr[i]。

  • 列印重新排列後的陣列。

範例

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
   int ptr[size];
   for(int i = 0; i < size; i++){
      ptr[arr[i]] = i;
   }
   for(int i = 0; i < size; i++){
      arr[i] = ptr[i];
   }
}
int main(){
   //input an array
   int arr[] = {3, 4, 1, 2, 0};
   int size = sizeof(arr) / sizeof(arr[0]);
   //print the original Array
   cout<<"Array before Arrangement: ";
   for (int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   cout<<"\nRearrangement of an array such that &lsquo;arr[j]&rsquo; becomes &lsquo;i&rsquo; if &lsquo;arr[i]&rsquo; is &lsquo;j&rsquo; is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

輸出

如果我們執行上面的程式碼,它將產生以下輸出

Array before Arrangement: 3 4 1 2 0
Rearrangement of an array such that &lsquo;arr[j]&rsquo; becomes &lsquo;i&rsquo; if &lsquo;arr[i]&rsquo; is &lsquo;j&rsquo; is: 4 2 3 0 1
#

以上是重新排列一個數組,如果在C++中,'arr'是'j',則使'arr'變為'i'的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除