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

更新於: 2020-08-14

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告