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