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