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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告