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