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
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP