C++程式,用於將陣列中所有x的倍數元素按升序重新排列


給定一個整數型別陣列‘int arr[]’和一個整數型別變數‘x’。任務是重新排列陣列的所有元素,使其都可被給定的整數‘x’整除,並且排列順序為升序。

讓我們看看這個程式的各種輸入輸出場景:

輸入 - int arr[] = {4,24, 3, 5, 7, 22, 12, 10}, int x = 2

輸出 - 將陣列中所有2的倍數元素按升序重新排列的結果為:4 10 12 22 24 3 5 7

解釋 - 我們給定一個包含值{4,24, 3, 5, 7, 22, 12, 10}的整數型別陣列和值為2的x。首先,我們將檢查陣列中所有可以被2整除的元素,即4, 24, 22, 12, 10。然後,我們將這些元素按升序排列,即4, 10, 12, 22, 24,剩餘元素保持原有相對順序,最終輸出為4 10 12 22 24 3 5 7。

輸入 - int arr[] = {4,24, 3, 5, 7, 22, 12, 10}, int x = 3

輸出 - 將陣列中所有3的倍數元素按升序重新排列的結果為:3 12 24 4 5 7 22 10

解釋 - 我們給定一個包含值{4,24, 3, 5, 7, 22, 12, 10}的整數型別陣列和值為3的x。首先,我們將檢查陣列中所有可以被3整除的元素,即3, 24, 12。然後,我們將這些元素按升序排列,即3, 12, 24,剩餘元素保持原有相對順序,最終輸出為3 12 24 4 5 7 22 10。

下面程式中使用的方案如下:

  • 宣告一個整數型別陣列。計算陣列的大小並將其儲存在名為size的變數中。宣告一個整數型別變數'x',根據它需要重新排列陣列。

  • 將資料傳遞給函式Rearrange_Elements(arr, size, x)

  • 在函式Rearrange_Elements(arr, size, x)內部:

    • 建立一個名為vec的變數,其型別為vector,儲存整數型別值。

    • 從i=0開始迴圈,直到i小於size。在迴圈內,檢查IF arr[i] % x = 0,如果是,則將arr[i]推入vec。

    • 使用C++ STL sort方法對陣列進行排序,我們將begin()和end()作為引數傳遞給函式。

    • 從i=0開始迴圈,直到i小於size。檢查IF arr[i] % x = 0,如果是,則將arr[i]設定為vec[j++]。

    • 使用for迴圈列印陣列,遍歷陣列從第一個元素到最後一個元素。

示例

#include <bits/stdc++.h>
using namespace std;
void Rearrange_Elements(int arr[], int size, int x){
   vector<int> vec;
   int j = 0;
   for(int i = 0; i < size; i++){
      if(arr[i] % x == 0){
         vec.push_back(arr[i]);
      }
   }
   sort(vec.begin(), vec.end());
   for (int i = 0; i < size; i++){
      if(arr[i] % x == 0){
         arr[i] = vec[j++];
      }
   }
   cout<<"Rearrangement of all elements of array which are multiples of x "<<x<<" in decreasing order is: ";
   for(int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
}
int main(){
   int arr[] = {4,24, 3, 5, 7, 22, 12, 10};
   int x = 2;
   int size = sizeof(arr) / sizeof(arr[0]);
   Rearrange_Elements(arr, size, x);
   return 0;
}

輸出

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

Rearrangement of all elements of array which are multiples of x 2 in decreasing order is: 4 10 3 5 7 12 22 24

更新時間: 2021年11月2日

344 次檢視

開啟你的職業生涯

透過完成課程獲得認證

立即開始
廣告