Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จัดเรียงอาร์เรย์ใหม่เพื่อให้ arr[i] =i ใน C++


เราได้รับอาร์เรย์ประเภทจำนวนเต็มบวก สมมติว่า arr[] ของขนาดที่กำหนดใดๆ เพื่อให้องค์ประกอบในอาร์เรย์มีค่ามากกว่า 0 แต่น้อยกว่าขนาดของอาร์เรย์ งานคือการจัดเรียงอาร์เรย์ใหม่ในลักษณะที่ว่าถ้า arr[i] คือ 'i' ถ้า 'i' อยู่ในอาร์เรย์อื่น จะตั้งค่าองค์ประกอบ arr[i] ด้วยค่า -1 และพิมพ์ค่าสุดท้าย ผลลัพธ์

ให้เราดูสถานการณ์อินพุตเอาต์พุตที่หลากหลายสำหรับสิ่งนี้ -

ป้อนข้อมูล − int 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)

ป้อนข้อมูล − int 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, size)

    • ประกาศตัวแปรประเภทจำนวนเต็ม สมมติว่า ptr

    • เริ่มวนรอบ FOR จาก i ถึง 0 จนถึง i น้อยกว่าขนาด ภายในลูป เริ่มวนใหม่ FOR จาก j ถึง 0 จนถึง j น้อยกว่าขนาด

    • ภายในลูป ให้ตรวจสอบ IF arr[j] =i จากนั้นตั้งค่า ptr =arr[j], arr[j] เป็น arr[i],arr[i] เป็น ptr และแตก

    • เริ่มวนรอบ FOR จาก i ถึง จนถึง i น้อยกว่าขนาด ภายในลูป ให้ตรวจสอบ 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