ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ของจำนวนเต็ม n ตัว งานของเราคือการสร้างโปรแกรมเพื่อค้นหาองค์ประกอบต่ำสุดและสูงสุดของอาร์เรย์ใน C++
คำอธิบายปัญหา − ที่นี่ เรามีอาร์เรย์ arr[] มีค่าจำนวนเต็ม n เราต้องหาค่าสูงสุดและค่าต่ำสุดจากค่าทั้งหมดของอาร์เรย์
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
อินพุต
arr[] = {2, 1, 6, 9, 4, 10, 15, 21}
ผลลัพธ์
max = 21 , min = 1
แนวทางการแก้ปัญหา
ปัญหามีได้หลายวิธี
ทางออกเดียว จะเป็นการเปรียบเทียบองค์ประกอบของอาร์เรย์โดยตรง ทำได้โดยตรวจสอบว่าแต่ละองค์ประกอบของอาร์เรย์แล้วหาค่าสูงสุดและต่ำสุดโดยใช้การเปรียบเทียบ
ซึ่งสามารถทำได้โดยใช้สองวิธีที่แตกต่างกัน
- แนวทางการทำซ้ำ
- แนวทางแบบเรียกซ้ำ
แนวทางการแก้ปัญหาซ้ำๆ
เราจะวนลูปสำหรับอาร์เรย์ แยกแต่ละองค์ประกอบของอาร์เรย์ และเปรียบเทียบกับองค์ประกอบสูงสุดและต่ำสุดของอาร์เรย์
โปรแกรมเพื่อแสดงให้เห็นว่าโซลูชันของเราทำงานอย่างไร
ตัวอย่าง
#include <iostream> using namespace std; void getMinMax(int arr[] , int N){ int max = arr[0], min = arr[0]; for(int i = 1; i < N; i++){ if(max < arr[i]) max = arr[i]; if(min > arr[i]) min = arr[i]; } cout<<"Maximum Value = "<<max<<"\n"; cout<<"Minimum Value = "<<min; } int main(){ int arr[] = {2, 1, 6, 9, 4, 10, 15, 21}; int N = 8; getMinMax(arr, N); return 0; }
ผลลัพธ์
Maximum Value = 21 Minimum Value = 1
วิธีการแบบเรียกซ้ำในการแก้ปัญหา
ในแนวทางนี้ เราจะแก้ปัญหาด้วยการค้นหาองค์ประกอบสูงสุดและต่ำสุดของอาร์เรย์โดยเรียกใช้เมธอดซ้ำแล้วซ้ำเล่าสำหรับองค์ประกอบทั้งหมดของอาร์เรย์
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <iostream> using namespace std; int CalcMinValue(int arr[], int n) { return (n == 1) ? arr[0] : min(arr[n - 1], CalcMinValue(arr, n - 1)); } int CalcMaxValue(int arr[], int n) { return (n == 1) ? arr[0] : max(arr[n -1], CalcMinValue(arr, n - 1)); } int main() { int arr[] = {2, 1, 6, 9, 4, 10, 15, 21}; int N = 8; cout<<"Maximum Value = "<<CalcMaxValue(arr, N)<<endl; cout<<"Minimum Value = "<<CalcMinValue(arr, N); return 0; }
ผลลัพธ์
Maximum Value = 21 Minimum Value = 1
ปัญหานี้สามารถแก้ไขได้โดยใช้ฟังก์ชัน inbuild ที่มีให้ในไลบรารีเทมเพลตมาตรฐานของภาษาการเขียนโปรแกรม C++
วิธีในการค้นหาวิธีแก้ปัญหาคือ min_element() และ max_element() และวิธีการเหล่านี้พบได้ในไลบรารี bits/stdc++.h ใน C++
โปรแกรมแสดงวิธีแก้ปัญหา
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int main() { int arr[] = {2, 1, 6, 9, 4, 10, 15, 21}; int N = 8; cout<<"Maximum Value = "<<(*max_element(arr, arr+N))<<endl; cout<<"Minimum Value = "<<(*min_element(arr, arr+N)); return 0; }
ผลลัพธ์
Maximum Value = 21 Minimum Value = 1