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

จัดเรียงค่าคี่และคู่ในรูปแบบสำรองในลำดับจากน้อยไปมากใน C+=+


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