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

จัดเรียงตัวเลขบวกและลบใหม่โดยใช้ฟังก์ชันการจัดเรียงในตัวใน C++


เราได้รับอาร์เรย์ประเภทจำนวนเต็มที่มีทั้งจำนวนบวกและลบ สมมติว่า arr[] ของขนาดที่กำหนด งานคือการจัดเรียงอาร์เรย์ใหม่ในลักษณะที่องค์ประกอบทั้งหมดของอาร์เรย์ได้รับการจัดเรียงโดยใช้ฟังก์ชันการจัดเรียงแบบฝังของ C ++ STL เช่นเดียวกับการใช้เทคนิคการเขียนโค้ดแบบเรียกซ้ำและการพิมพ์ผลลัพธ์

ให้เราดูสถานการณ์อินพุตเอาต์พุตที่หลากหลายสำหรับสิ่งนี้ -

ป้อนข้อมูล − int arr[] ={4, 2, -1, -1, 6, -3, 0}

ผลผลิต − การจัดเรียงตัวเลขบวกและลบใหม่โดยใช้ฟังก์ชันการจัดเรียงในตัวคือ:-3 -1 -1 0 2 4 6

คำอธิบาย − เราได้รับอาร์เรย์จำนวนเต็มขนาด 7 ที่มีทั้งองค์ประกอบบวกและลบ ตอนนี้ เราจะจัดเรียงอาร์เรย์ใหม่ในลักษณะที่องค์ประกอบทั้งหมดของอาร์เรย์ถูกจัดเรียง เช่น องค์ประกอบเชิงลบทั้งหมดปรากฏขึ้นก่อนองค์ประกอบบวกทั้งหมด และผลลัพธ์สุดท้ายจะเป็น -3 -1 -1 0 2 4 6

ป้อนข้อมูล − int arr[] ={-9, -10, 2, 3, 10, 5, 8, 4}

ผลผลิต − การจัดเรียงตัวเลขบวกและลบใหม่โดยใช้ฟังก์ชันการจัดเรียงในตัวคือ:-10 -9 2 3 4 5 8 10

คำอธิบาย − เราได้รับอาร์เรย์จำนวนเต็มขนาด 8 ที่มีทั้งองค์ประกอบบวกและลบ ตอนนี้ เราจะจัดเรียงอาร์เรย์ใหม่ในลักษณะที่องค์ประกอบทั้งหมดของอาร์เรย์ถูกจัดเรียง กล่าวคือ องค์ประกอบเชิงลบทั้งหมดปรากฏขึ้นก่อนองค์ประกอบบวกทั้งหมด และผลลัพธ์สุดท้ายจะเป็น -10 -9 2 3 4 5 8 10

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

การใช้ sort()

  • ป้อนอาร์เรย์ขององค์ประกอบประเภทจำนวนเต็มและคำนวณขนาดของอาร์เรย์

  • ส่งข้อมูลไปยังฟังก์ชัน Rearrangement(int arr[], int size)

  • ภายในฟังก์ชัน การจัดเรียงใหม่ (int arr[], int size)

    • เรียกใช้ฟังก์ชันการเรียงลำดับของ C++ STL โดยส่งอาร์เรย์และขนาดของอาร์เรย์เป็นพารามิเตอร์ไปยังฟังก์ชัน แล้วฟังก์ชันจะคืนค่าอาร์เรย์ที่จัดเรียง

  • พิมพ์ผลลัพธ์

การใช้การเรียกซ้ำ

  • ป้อนอาร์เรย์ขององค์ประกอบประเภทจำนวนเต็มและคำนวณขนาดของอาร์เรย์

  • ประกาศตัวแปรชั่วคราว สมมุติว่า ชั่วคราว

  • เริ่มวนรอบ FOR จาก i ถึง จนถึง i น้อยกว่าขนาดของอาร์เรย์ ภายในลูป ให้ตรวจสอบว่า arr[i] น้อยกว่า 0 แล้วเพิ่มอุณหภูมิขึ้น 1

  • เรียกใช้การจัดเรียงใหม่ (arr, 0, (ขนาด - 1)) โดยส่งอาร์เรย์ 0 และขนาด -1 เป็นพารามิเตอร์ไปยังฟังก์ชัน

  • เรียกใช้ฟังก์ชันการหมุนโดยส่งอาร์เรย์ temp และ size - 1 ไปยังฟังก์ชัน

  • ภายในฟังก์ชัน Rearrangement(int arr[], int first, int last)

    • ตรวจสอบว่า IF เท่ากับค่าล่าสุดแล้วกลับ

    • ทำการเรียกซ้ำไปยังฟังก์ชัน Rearrangement() และส่งผ่านอาร์เรย์ องค์ประกอบแรก + 1 และสุดท้ายเป็นพารามิเตอร์

    • ตรวจสอบว่า arr[first] มากกว่า 0 จากนั้นให้เรียกใช้ฟังก์ชันเป็น Rotate(arr, (first + 1), last) และ Rotate(arr, first, last)

  • ภายในฟังก์ชัน Rotate(int arr[], int first, int last)

    • เริ่มในขณะที่ครั้งแรกน้อยกว่าครั้งสุดท้าย ในขณะนั้น ให้ประกาศตัวแปรจำนวนเต็มเป็น temp และตั้งค่าด้วย arr[first] จากนั้นตั้งค่า arr[first] เป็น arr[last] และ arr[last] เป็น temp เพิ่มค่าแรก 1 และลดค่าสุดท้าย 1

  • พิมพ์ผลลัพธ์

1. การใช้ฟังก์ชัน sort()

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
//using the sort() function
void Rearrangement(int arr[], int size){
   sort(arr, arr + size);
}
int main(){
   int arr[] = {4, 2, -1, -1, 6, -3, 0};
   int size = sizeof(arr)/sizeof(arr[0]);
   //calling the function to rearrange the array
   Rearrangement(arr, size);
   //print the array after rearranging the values
   cout<<"Rearrangement of positive and negative numbers using inbuilt sort function is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

ผลลัพธ์

หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้

Rearrangement of positive and negative numbers using inbuilt sort function is: -3 -1 -1 0 2 4 6

2. การเรียกซ้ำไปยังฟังก์ชัน

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;
void Rotate(int arr[], int first, int last){
   while(first < last){
      int temp = arr[first];
      arr[first] = arr[last];
      arr[last] = temp;
      first++;
      last--;
   }
}
void Rearrangement(int arr[], int first, int last){
   if(first == last){
      return;
   }
   Rearrangement(arr, (first + 1), last);
   if(arr[first] >= 0){
      Rotate(arr, (first + 1), last);
      Rotate(arr, first, last);
   }
}
int main(){
   int arr[] = {4, 2, -1, -1, 6, -3, 0};
   int size = sizeof(arr)/sizeof(arr[0]);
   int temp = 0;
   for(int i = 0; i < size; i++){
      if(arr[i] < 0){
         temp++;
      }
   }
   //calling the function to rearrange the array
   Rearrangement(arr, 0, (size - 1));
   Rotate(arr, temp, (size - 1));
   //print the array after rearranging the values
   cout<<"Rearrangement of positive and negative numbers using Recursion is: ";
   for(int i = 0; i < size; i++){
      cout<< arr[i] << " ";
   }
   return 0;
}

ผลลัพธ์

หากเรารันโค้ดด้านบน มันจะสร้างผลลัพธ์ต่อไปนี้

Rearrangement of positive and negative numbers using Recursion is: -1 -1 -3 4 2 6 0