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

C++에서 arr[i] =i가 되도록 배열을 재정렬하십시오.

<시간/>

우리는 배열의 요소가 0보다 크고 배열 크기보다 작은 값을 가져야 하는 임의의 주어진 크기의 arr[]와 같은 양의 정수 유형 배열이 제공됩니다. 작업은 arr[i]가 'i'인 경우 배열을 재배열하는 것입니다. 배열에 'i'가 있으면 값이 -1인 arr[i] 요소를 설정하고 최종 값을 인쇄합니다. 결과입니다.

여기에 대한 다양한 입력 출력 시나리오를 살펴보겠습니다 -

입력 - 정수 arr[] ={0, 8, 1, 5, 4, 3, 2, 9 }

출력 − arr[i] =i가 되도록 배열을 재배열:0 1 2 3 4 5 -1 -1

설명 − 크기가 8인 정수 배열과 8보다 작은 배열 값이 있는 모든 요소가 제공됩니다. 이제 배열을 다시 정렬합니다. 즉,

arr[0] = 0(present in an array)
arr[1] = 1(present in an array)
arr[2] = 2(present in an array)
arr[3] = 3(present in an array)
arr[4] = 4(present in an array)
arr[5] = 5(present in an array)
arr[6] = -1(NOT present in an array)
arr[7] = -1(NOT present in an array)

입력 - 정수 arr[] ={1, 2, 6, 9, 10}

출력 - arr[i] =i가 되도록 배열을 재배열:-1 1 2 -1 -1

설명 - 우리는 크기가 5인 정수 배열과 5보다 작은 배열 값이 주어진다. 이제 배열을 재정렬할 것이다. 즉

arr[0] = -1(NOT present in an array)
arr[1] = 1(present in an array)
arr[2] = 2(present in an array)
arr[3] = -1(NOT present in an array)
arr[4] = -1(NOT present in an array)

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 정수형 요소의 배열을 입력하고 배열의 크기를 계산합니다.

  • 배열 전에 배열을 인쇄하고 함수를 호출하십시오.Rearranging(arr, size)

  • 함수 내부 재정렬(arr, 크기)

    • 정수형 변수 선언 ptr

    • i에서 크기보다 작아질 때까지 FOR 루프를 시작합니다. 루프 내에서 j가 크기보다 작아질 때까지 j에서 0까지 다른 루프 FOR를 시작합니다.

    • 루프 내에서 IF arr[j] =i를 확인한 다음 ptr =arr[j], arr[j]를 arr[i]로, arr[i]를 ptr로 설정하고 중단합니다.

    • i에서 i가 크기보다 작을 때까지 루프 FOR를 시작합니다. 루프 내에서 IF arr[i]!=i를 확인한 다음 arr[i]를 -1로 설정합니다.

  • 배열의 값을 재배열한 후 배열을 출력합니다.

#include <iostream>
using namespace std;
void Rearranging(int arr[], int size){
   int ptr;
   for(int i = 0; i < size; i++){
      for(int j = 0; j < size; j++){
         if(arr[j] == i){
            ptr = arr[j];
            arr[j] = arr[i];
            arr[i] = ptr;
            break;
         }
      }
   }
   for(int i = 0; i < size; i++){
      if(arr[i] != i){
         arr[i] = -1;
      }
   }
}
int main(){
   int arr[] = {0, 8, 1, 5, 4, 3, 2, 9 };
   int size = sizeof(arr) / sizeof(arr[0]);
   //calling the function to rearrange an array such that arr[i] = i
   Rearranging(arr, size);
   //Printing the array
   cout<<"Rearrangement of an array such that arr[i] = i is: ";
   for(int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Rearrangement of an array such that arr[i] = i is: 0 1 2 3 4 5 -1 -1