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

Sắp xếp lại một mảng sao cho arr [i] =i 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ột mảng theo cách mà nếu arr [i] là 'i', nếu 'i' có trong một mảng khác, nó sẽ đặt phần tử arr [i] với giá trị -1 và in ra phần tử cuối cùng kết quả.

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 [] ={0, 8, 1, 5, 4, 3, 2, 9}

Đầu ra - Sắp xếp lại một mảng sao cho arr [i] =i là:0 1 2 3 4 5 -1 -1

Giải thích - chúng ta được cung cấp một mảng số nguyên có kích thước 8 và tất cả các phần tử trong mảng có giá trị nhỏ hơn 8. Bây giờ, chúng ta sẽ sắp xếp lại mảng, tức là

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)

Đầu vào - int arr [] ={1, 2, 6, 9, 10}

Đầu ra - Sắp xếp lại một mảng sao cho arr [i] =i là:-1 1 2 -1 -1

Giải thích - chúng ta được cung cấp một mảng số nguyên có kích thước 5 và tất cả các phần tử trong mảng có giá trị nhỏ hơn 5. Bây giờ, chúng ta sẽ sắp xếp lại mảng, tức là

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)

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)

    • Khai báo một biến kiểu số nguyên, giả sử, ptr

    • Bắt đầu vòng lặp FOR từ i đến 0 cho đến khi tôi nhỏ hơn kích thước. Bên trong vòng lặp, bắt đầu một vòng lặp FOR khác từ j đến 0 cho đến khi j nhỏ hơn kích thước.

    • Bên trong vòng lặp, kiểm tra IF arr [j] =i, sau đó đặt ptr =arr [j], arr [j] thành arr [i], arr [i] thành ptr và ngắt.

    • Bắt đầu vòng lặp FOR từ tôi đến cho đến khi tôi nhỏ hơn kích thước. Bên trong vòng lặp, kiểm tra IF arr [i]! =I, sau đó đặt arr [i] thành -1.

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

Ví dụ

#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] << " ";
   }
}

Đầu ra

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

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