Computer >> Máy Tính >  >> Lập trình >> C ++

Sắp xếp lại một mảng sao cho ‘arr [j]’ trở thành ‘i’ nếu ‘arr [i]’ là ‘j’ trong C ++

Chúng ta được cung cấp một mảng kiểu số nguyên dương, giả sử, arr [] có kích thước cho trước bất kỳ sao cho các phần tử trong mảng phải có giá trị lớn hơn 0 nhưng nhỏ hơn kích thước của một mảng. Nhiệm vụ là sắp xếp lại mảng theo cách mà nếu arr [j] là ‘j’ thì arr [j] trở thành ‘i’ và in ra kết quả cuối cùng.

Hãy để chúng tôi xem các kịch bản đầu ra đầu vào khác nhau cho việc này -

Đầu vào - int arr [] ={3, 4, 1, 2, 0}

Outpu t - Mảng trước Sắp xếp:3 4 1 2 0 Sắp xếp lại một mảng sao cho arr [j] trở thành i nếu arr [i] là j là:4 2 3 0 1

Giải thích - chúng ta được cung cấp một mảng số nguyên có kích thước là 6 và tất cả các phần tử trong mảng có giá trị nhỏ hơn 6. Bây giờ, chúng ta sẽ sắp xếp lại mảng, tức là arr [1] là 4, arr [4] =1; arr [2] là 1, arr [1] =2; arr [3] is2, arr [2] =3; arr [4] là 0, arr [0] =4. Do đó, mảng cuối cùng là 4 2 3 0 1.

Inpu t - int arr [] ={2, 0, 1, 3}

Đầu ra - Mảng trước Sắp xếp:2 0 1 3 Sắp xếp lại một mảng sao cho arr [j] trở thành i nếu arr [i] là j là:1 2 0 3

Giải thích - chúng ta được cung cấp một mảng số nguyên có kích thước là 6 và tất cả các phần tử trong mảng có giá trị nhỏ hơn 6. Bây giờ, chúng ta sẽ sắp xếp lại mảng, tức là arr [0] là 2, arr [2] =0; arr [1] là 0, arr [0] =1; arr [2] is1, arr [1] =2; arr [3] là 3, arr [3] =3. Do đó, mảng cuối cùng là 1 2 0 3.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Nhập một mảng các phần tử kiểu số nguyên và tính kích thước của một mảng.

  • In mảng trước khi sắp xếp và gọi hàm Sắp xếp lại (arr, size)

  • Bên trong chức năng Sắp xếp lại (arr, size)

    • Tạo một mảng các giá trị kiểu số nguyên là ptr [] có cùng kích thước với mảng arr [].

    • Bắt đầu vòng lặp FOR, từ i đến 0 cho đến khi tôi nhỏ hơn kích thước. Trong vòng lặp, đặt ptr [arr [i]] thành i.

    • Bắt đầu vòng lặp FOR từ i đến 0 cho đến khi tôi nhỏ hơn kích thước. Trong vòng lặp, đặt arr [i] thành ptr [i].

  • In mảng sau khi sắp xếp lại các giá trị của một mảng.

Ví dụ

#include <bits/stdc++.h>
using namespace std;
void Rearrangement(int arr[], int size){
   int ptr[size];
   for(int i = 0; i < size; i++){
      ptr[arr[i]] = i;
   }
   for(int i = 0; i < size; i++){
      arr[i] = ptr[i];
   }
}
int main(){
   //input an array
   int arr[] = {3, 4, 1, 2, 0};
   int size = sizeof(arr) / sizeof(arr[0]);
   //print the original Array
   cout<<"Array before Arrangement: ";
   for (int i = 0; i < size; i++){
      cout << arr[i] << " ";
   }
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   cout<<"\nRearrangement of an array such that ‘arr[j]’ becomes ‘i’ if ‘arr[i]’ is ‘j’ is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

Array before Arrangement: 3 4 1 2 0
Rearrangement of an array such that ‘arr[j]’ becomes ‘i’ if ‘arr[i]’ is ‘j’ is: 4 2 3 0 1