เราได้รับอาร์เรย์ประเภทจำนวนเต็มที่มีทั้งจำนวนบวกและลบ สมมติว่า arr[] ของขนาดที่กำหนด งานคือการจัดเรียงอาร์เรย์ใหม่ในลักษณะที่เมื่อองค์ประกอบต่ำสุดในอาร์เรย์เป็นเลขคี่ องค์ประกอบของอาร์เรย์จะถูกจัดเรียงใหม่ในลักษณะที่คี่ก่อนและแบบคู่ เมื่อองค์ประกอบต่ำสุดในอาร์เรย์เป็นเลขคู่ องค์ประกอบของอาร์เรย์จะถูกจัดเรียงใหม่ในลักษณะคู่ที่หนึ่งและลำดับที่สองคี่ และหากจำนวนขององค์ประกอบคู่/คี่มากกว่าจำนวนขององค์ประกอบคี่/คู่ ก็จะวาง 0 และ พิมพ์ผลลัพธ์
ให้เราดูสถานการณ์อินพุตเอาต์พุตที่หลากหลายสำหรับสิ่งนี้ -
ป้อนข้อมูล − int arr[] ={ 1, 1, 2, 2, 5, 4 }
ผลผลิต − การจัดเรียงใหม่ของค่าคี่และคู่ในแบบทางเลือกจากน้อยไปหามากคือ:1 2 1 2 5 4
คำอธิบาย − เราได้รับอาร์เรย์ประเภทจำนวนเต็ม ตอนนี้เราจะตรวจสอบว่าองค์ประกอบใดเป็นองค์ประกอบที่เล็กที่สุดในอาร์เรย์ เช่น 1 ซึ่งเป็นค่าคี่ ดังนั้นองค์ประกอบจะถูกจัดเรียงแบบคี่ก่อนและแบบที่สอง เช่น 1 2 1 2 5 4 เป็นผลลัพธ์สุดท้าย
ป้อนข้อมูล − int arr[] ={ 6, 3, 2, 8, 10, 4 }
ผลผลิต − การจัดเรียงใหม่ของค่าคี่และคู่ในแบบทางเลือกจากน้อยไปหามากคือ:2 3 4 0 6 0
คำอธิบาย − เราได้รับอาร์เรย์ประเภทจำนวนเต็ม ตอนนี้เราจะตรวจสอบว่าองค์ประกอบใดเป็นองค์ประกอบที่เล็กที่สุดในอาร์เรย์เช่น 2 ซึ่งเป็นค่าคู่ดังนั้นองค์ประกอบ
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
ป้อนอาร์เรย์ขององค์ประกอบประเภทจำนวนเต็มและคำนวณขนาดของอาร์เรย์
-
จัดเรียงอาร์เรย์โดยใช้วิธีการจัดเรียงของ C++ STL โดยส่งอาร์เรย์และขนาดของอาร์เรย์ไปยังฟังก์ชันการจัดเรียง
-
ประกาศตัวแปรจำนวนเต็มและตั้งค่าด้วยการเรียกฟังก์ชัน Rearrangement(arr, size)
-
ภายในฟังก์ชัน การจัดเรียงใหม่ (arr, size)
-
สร้างตัวแปร 2 ตัวเป็น 'vec_1' และ 'vec_2' เป็นเวกเตอร์ประเภทหนึ่งที่จัดเก็บข้อมูลประเภทจำนวนเต็ม
-
สร้างตัวแปรชั่วคราวของชนิดจำนวนเต็มเป็น temp และตั้งค่าเป็น 0
-
ประกาศตัวแปรประเภท bool อื่นเป็นเช็คและตั้งค่าเป็น FALSE
-
เริ่มวนรอบ FOR จาก i ถึง 0 จนถึง i น้อยกว่าขนาด ภายในลูป ให้ตรวจสอบว่า arr[i] % 2 =0 จากนั้นกด arr[i] ไปที่ vec_1 มิฉะนั้น กด arr[i] ไปที่ vec_2
-
ประกาศตัวแปรจำนวนเต็มเป็น i และ j เป็น 0 ตรวจสอบว่า arr[0] % 2 =0 แล้วตั้งค่าการตรวจสอบเป็นจริง
-
เริ่มในขณะที่อุณหภูมิน้อยกว่าขนาด ภายในลูป ให้ตรวจสอบ IF check =true จากนั้นตั้งค่า arr[temp++] เป็น vec_1[i++] และตั้งค่า check เป็น !check ELSE, arr[temp++] ถึง vec_2[j++] และตั้งค่า check เป็น !check.
-
-
พิมพ์ผลลัพธ์
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; void Rearrangement(int arr[], int size){ vector<int> vec_1, vec_2; int temp = 0; bool check = false; for(int i = 0; i < size; i++){ if(arr[i] % 2 == 0){ vec_1.push_back(arr[i]); } else{ vec_2.push_back(arr[i]); } } int i = 0; int j = 0; if(arr[0] % 2 == 0){ check = true; } while(temp < size){ if(check == true){ arr[temp++] = vec_1[i++]; check = !check; } else{ arr[temp++] = vec_2[j++]; check = !check; } } } int main(){ int arr[] = { 1, 1, 2, 2, 5, 4 }; int size = sizeof(arr) / sizeof(int); //sort an array sort(arr, arr + size); cout<<"Rearrangement of Odd and Even values in Alternate Fashion in Ascending Order is: "; Rearrangement(arr, size); for(int i = 0; i < size; i++){ cout << arr[i] << " "; } return 0; }
ผลลัพธ์
หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้
Rearrangement of Odd and Even values in Alternate Fashion in Ascending Order is: 1 2 1 2 5 4