배열이 제공됩니다. 배열을 정렬할 필요가 없습니다. 작업은 정렬된 형식에서 해당 배열의 인접 요소 간의 최대 차이를 찾는 것입니다. 따라서 첫 번째는 배열을 오름차순 또는 내림차순으로 정렬하는 것입니다. 그런 다음 배열을 반복하고 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