C++ 中排序陣列後相鄰元素的最大差值
給定一個數組。該陣列不需要排序。任務是找到該陣列在其排序形式中相鄰元素之間的最大差值。所以第一步是按升序或降序對陣列進行排序。然後我們將迭代陣列並計算 Arr[i+1]-Arr[i] 的相鄰差值。然後對於每次迭代,我們將此差值與迄今為止找到的最大差值進行比較。
輸入 − Arr[] = [ 1,5,10,2,7 ]
輸出 − 陣列排序後相鄰元素的最大差值為 3。
說明 − 按升序排序的 Arr[] = [ 1,2,5,7,10 ]。因此,相鄰差值如下所示 −
Arr[1]-Arr[0]=1, Maximum Difference=1 Arr[2]-Arr[1]=3, Maximum Difference=3 Arr[3]-Arr[2]=2, Maximum Difference=3 Arr[4]-Arr[3]=3, Maximum Difference=3
輸入 − Arr[] = [ 5,11,21,15,20 ]
輸出 − 陣列排序後相鄰元素的最大差值為 6。
說明 − 按升序排序的 Arr[] = [ 5,11,15,20,21 ]。因此,相鄰差值如下所示 −
Arr[1]-Arr[0]=6, Maximum Difference=6 Arr[2]-Arr[1]=4, Maximum Difference=6 Arr[3]-Arr[2]=5, Maximum Difference=6 Arr[4]-Arr[3]=1, Maximum Difference=6
下面程式中使用的方案如下
輸入整數陣列 Arr[]。
按升序對陣列進行排序。(此處排序順序無關緊要)
宣告一個變數,例如 MaxD,用於儲存迄今為止找到的相鄰元素之間的最大差值。將其初始值設為 Arr[1]-Arr[0]。
從第二個元素開始,到陣列的最後一個元素索引,啟動迴圈。
如果計算出的 Arr[i+1]-Arr[i] 差值 > MaxD,則更新 MaxD。
繼續此操作,直到我們到達倒數第二個元素索引。
列印結果 MaxD 作為最大相鄰元素差值。
示例
#include <bits/stdc++.h> using namespace std; int max_adj_Diff(int A[],int size){ int MaxD=A[1]-A[0]; for(int i=1;i<size-1;i++){ if(A[i+1]-A[i] > MaxD) MaxD=A[i+1]-A[i]; } return MaxD; } int main(){ int Arr[]={1,5,2,18,20,13}; sort(Arr,6); //this is supposed to sort array in increasing order int md=max_adj_Diff(Arr,6); cout<<"Maximum adjacent difference in array in its sorted form :"<<md; return 0; }
輸出
如果我們執行以上程式碼,它將生成以下輸出:
Maximum adjacent difference in array in its sorted form: 8
廣告