首頁 >後端開發 >C++ >C++程式以最大最小形式重新排列數組

C++程式以最大最小形式重新排列數組

王林
王林轉載
2023-08-28 14:29:06793瀏覽

C++程式以最大最小形式重新排列數組

我們得到一個整數數組,它可以按排序/未排序的方式排列。任務是先將陣列排序(如果值未排序),然後以陣列的第一個元素為最大值、第二個元素為最小值、第三個元素為數組的方式排列數組。 第二個最大值,第四個將是第二個最小值,依此類推。

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

輸入 − int arr[] = {7, 5, 2, 3, 4, 9, 10, 5 }

輸出− 排列前的陣列:2 3 4 5 5 7 9 10 以最大最小形式重新排列數組為: 10 2 9 3 7 4 5 5

解釋− 我們得到一個整數型數組,其中包含值{7, 5, 2 , 3, 4, 9, 10, 5 }。首先,我們將一個陣列排序,它將是 {2 3 4 5 5 7 9 10 }。其次,將最大元素排列在arr[0] (即10),然後將最小元素排列在arr[1] (即2),然後將第二大元素排列在arr[2] (即9),依此類推。最終結果陣列將為10 2 9 3 7 4 5 5

#輸入− int arr[] = {2, 4, 1, 6, 7}

輸出− 排列前的陣列:1, 2, 4, 6, 7 以最大最小形式重新排列數組為:7, 1, 6, 2, 4

解釋− 我們得到一個整數類型數組,其中包含值{2, 4, 1, 6 , 7}。首先我們將一個陣列進行排序,結果是{1,2,4,6,7}。其次,將最大元素排列在arr[0]處,即 7 接著是 arr[1] 處的最小元素,即 1 接著是 arr[2] 處的第二大元素,即 6 等等。最終得到的陣列將為7, 1, 6, 2, 4

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

  • 輸入整數類型元素的陣列併計算數組的大小。透過將 arr[] 和陣列大小作為參數傳遞給函數來呼叫 C STL 的排序方法。

  • 在排列前列印陣列並呼叫函數Rearr_Max_Min(arr , size)

  • 在函數內部Rearr_Max_Min(arr, size)

    • 宣告一個變數為max 和將其設為size - 1,將另一個變數設為min,並將其設為0。將變數宣告為 max_val 並將其設為 arr[size - 1] 1。

    • 開始從 i 到 0 迴圈 FOR 直到 i 小於大小。在循環內,檢查 IF i % 2 = 0,然後將 arr[i] 設為 arr[i] (arr[max] % max_val) * max_val 並將最大值遞減 1。

    • 否則,將 arr[i] 設為 arr[i] (arr[min] % max_val) * max_val 並將 min 增加 1。

    • 開始循環FOR 從 i 到 0 直到 i 小於大小。在循環內,將arr[i] 設為arr[i] / max_val

#範例

#include <bits/stdc++.h>
using namespace std;
void Rearr_Max_Min(int arr[], int size){
   int max = size - 1;
   int min = 0;
   int max_val = arr[size - 1] + 1;
   for (int i = 0; i < size; i++){
      if (i % 2 == 0){
         arr[i] += (arr[max] % max_val) * max_val;
         max--;
      }
      else{
         arr[i] += (arr[min] % max_val) * max_val;
         min++;
      }
   }
   for(int i = 0; i < size; i++){
      arr[i] = arr[i] / max_val;
   }
}
int main(){
   //input an array
      int arr[] = {7, 5, 2, 3, 4, 9, 10, 5 };
      int size = sizeof(arr) / sizeof(arr[0]);
      //sort an array
      sort(arr, arr + size);
      //print the original Array after sorting
      cout<<"Array before Arrangement: ";
      for (int i = 0; i < size; i++){
         cout << arr[i] << " ";
      }
      //calling the function to rearrange the array
      Rearr_Max_Min(arr, size);
      //print the array after rearranging the values
      cout<<"\nRearrangement of an array in maximum minimum form is: ";
      for(int i = 0; i < size; i++){
         cout<< arr[i] << " ";
      }
   return 0;
}

輸出

#######################################################如果我們運行上面的程式碼,它將產生以下輸出###
Array before Arrangement: 2 3 4 5 5 7 9 10
Rearrangement of an array in maximum minimum form is: 10 2 9 3 7 4 5 5
###

以上是C++程式以最大最小形式重新排列數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

相關文章

看更多