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