给我们一个数组。数组不需要排序。任务是找到排序形式的该数组的相邻元素之间的最大差异。因此,第一件事是按升序或降序对数组进行排序。然后,我们将迭代数组并计算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