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
广告