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
猜你喜欢