เราได้รับอาร์เรย์ประเภทจำนวนเต็มบวก สมมติว่า 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