Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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