我們得到一個整數數組,它可以按排序/未排序的方式排列。任務是先將陣列排序(如果值未排序),然後以陣列的第一個元素為最大值、第二個元素為最小值、第三個元素為數組的方式排列數組。 第二個最大值,第四個將是第二個最小值,依此類推。
輸入 − 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中文網其他相關文章!