Arr1[]이라는 숫자 배열과 길이가 같거나 다른 또 다른 배열 Arr2[]가 제공됩니다. Arr1[]에는 단일 요소가 정렬되지 않도록 오름차순으로 정렬된 요소가 있습니다. Arr1[]의 잘못 배치된 요소를 대체하고 정렬할 수 있도록 두 번째 배열 Arr2[]에서 요소를 찾아야 합니다. 또한 Arr2[]에서 선택한 요소는 여러 옵션을 사용할 수 있는 경우 최대값이어야 합니다.
입력
Arr1[]= { 1,3,5,7,2,11 }, Arr2[]= { 4,8,7,10,9 }
출력
Maximum element that can make Arr1 sorted: 10
설명 - Arr1[]을 정렬할 수 있는 Arr2[]의 숫자는 모두>=7 및 <=11이므로 8,9,10입니다. 이 10개 중 최대값입니다.
New Arr1[]이 { 1,3,5,7,10,11 }이 되어 정렬됩니다.
입력
Arr1[]= { 12,5,22,17 }, Arr2[]= { 4,8,7,10,9 }
출력
No such element.
설명 − Arr2[]에>=12 및 <=22인 숫자가 없습니다.
Arr1[]을(를) 정렬할 수 없습니다.
아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.
-
배열 arr1[] 및 arr2[]는 숫자를 저장하는 데 사용됩니다. Arr1[]은 하나의 요소를 제외하고 오름차순으로 정렬됩니다.
-
함수 sortMax( int arr1[], int arr2[], int n1, int n2 )는 배열과 배열의 길이를 모두 취하고 arr2[]의 요소가 최대값이고 arr[]<의 잘못된 요소를 대체할 수도 있는 경우 arr1[]을 업데이트합니다. /P>
-
변수 wpos의 arr1[]에 잘못 배치된 요소의 인덱스를 저장합니다(초기 -1).
-
maxx는 arr1[]의 잘못 배치된 요소를 대체할 수 있는 arr2[]의 요소 중 최대값을 저장하고 정렬하는 데 사용됩니다.
-
처음에는 arr1[]을 탐색하고 잘못된 요소를 찾습니다. arr[i]
-
이제 arr2[]를 탐색하고 arr1[wpos-1]과 arr[wpos+1] 사이에 배치할 수 있는 요소를 찾습니다. 또한 그러한 요소가 존재한다면 maxx와 같은 요소와 비교하십시오.
-
최대 업데이트.
-
결국 arr1[wpos]을 maxx로 교체합니다.
-
그러한 요소가 발견되면 maxx를 반환하고, 그렇지 않으면 -1을 반환합니다.
-
요소가 발견되지 않으면 메시지를 표시합니다.
-
그렇지 않으면 정렬된 arr1[]을 인쇄합니다.
예시
// C++ program to make array sorted #include <bits/stdc++.h> using namespace std; int sortMax(int arr1[], int arr2[], int n1, int n2) //making arr1 sorted{ int wpos=-1; int maxx=-1; int i,j; for(i=0;i<n1;i++) if(arr1[i]<arr1[i-1]) wpos=i; for(j=0;j<n2;j++){ if(arr2[j]>=arr1[wpos-1] && arr2[j]<=arr1[wpos+1]) if(arr2[j]>=maxx) maxx=arr2[j]; } if(maxx!=-1) arr1[wpos]=maxx; return maxx; } int main(){ int arr1[] = { 1, 3, 7, 4, 10 }; int arr2[] = { 2, 1, 6, 8, 9 }; int len1 = sizeof(arr1) / sizeof(arr1[0]); int len2 = sizeof(arr2) / sizeof(arr2[0]); int res=sortMax(arr1, arr2, len1, len2); if(res==-1) cout<<"No swap possible! No such element!"; else{ cout<<"Maximum in arr2[] to make arr1[] sorted:"<<res; cout<<endl<<"Arr1[]:"; for(int i=0;i<len1;i++) cout<<arr1[i]<<" "; cout<<endl<<"Arr2[]:"; for(int i=0;i<len2;i++) cout<<arr2[i]<<" "; } }
출력
Maximum in arr2[] to make arr1[] sorted:9 Arr1[]:1 3 7 9 10 Arr2[]:2 1 6 8 9