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

โปรแกรมค้นหาองค์ประกอบต่ำสุด (หรือสูงสุด) ของอาร์เรย์ใน C++


ในปัญหานี้ เราได้รับอาร์เรย์ 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