Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

การหาค่าสูงสุดและต่ำสุดของอาร์เรย์ด้วยจำนวนการเปรียบเทียบน้อยที่สุดในภาษา C

เราได้รับอาร์เรย์ของจำนวนเต็ม งานคือการหาองค์ประกอบที่มีค่าน้อยที่สุดและมากที่สุดของอาร์เรย์ด้วยจำนวนการเปรียบเทียบน้อยที่สุด

ตัวอย่าง

อินพุต

Arr[] = { 1, 2, 4, 5, -3, 91 }

เอาต์พุต

ค่าสูงสุด: 91 ค่าต่ำสุด: -3

คำอธิบาย — เพื่อลดจำนวนการเปรียบเทียบ เราจะกำหนดค่าเริ่มต้นให้ค่าสูงสุดและต่ำสุดเป็น Arr[0] จากนั้นเริ่มจากองค์ประกอบที่ 2 เปรียบเทียบแต่ละค่ากับค่าต่ำสุดและสูงสุด แล้วอัปเดตตามนั้น

อินพุต

Arr[] = { 10, 20, 21, 31, 18, 11 }

เอาต์พุต

ค่าสูงสุด: 31 ค่าต่ำสุด: 10

วิธีการที่ใช้ในโปรแกรม

  • รับอาร์เรย์จำนวนเต็มเป็น Arr[]
  • ฟังก์ชัน getresult(int arr[], int n) ใช้หาค่าสูงสุดและต่ำสุดในอาร์เรย์ด้วยการเปรียบเทียบน้อยที่สุด
  • ถ้ามีเพียงองค์ประกอบเดียว ให้กำหนดตัวแปร max และ min เป็น arr[0]
  • ถ้ามีมากกว่าหนึ่งองค์ประกอบ ให้กำหนด max เป็น arr[1] และ min เป็น arr[0]
  • ในลูป for เริ่มวนจากองค์ประกอบที่ 3 (i=2) จนถึงตัวสุดท้าย
  • เปรียบเทียบแต่ละค่า (arr[i]) กับ min และ max หากน้อยกว่า min ให้อัปเดต min หากมากกว่า max ให้อัปเดต max
  • สุดท้ายพิมพ์ผลลัพธ์ที่เก็บอยู่ในตัวแปร max และ min

ตัวอย่างโค้ด

#include <stdio.h>
#include <math.h>

int getresult(int arr[], int n) {
    int min = 0, max = 0;
    
    /* ถ้ามีเพียงองค์ประกอบเดียว ให้คืนค่าเป็น min และ max ทั้งคู่ */
    if (n == 1) {
        min = max = arr[0];
    }
    
    /* ถ้ามีมากกว่าหนึ่งองค์ประกอบ ให้กำหนดค่าเริ่มต้น min และ max */
    if (arr[0] > arr[1]) {
        max = arr[0];
        min = arr[1];
    } else {
        max = arr[1];
        min = arr[0];
    }
    
    for (int i = 2; i < n; i++) {
        if (arr[i] > max)
            max = arr[i];
        else if (arr[i] < min)
            min = arr[i];
    }
    
    printf("ค่าต่ำสุด: %d", min);
    printf("ค่าสูงสุด: %d", max);
}

/* โปรแกรมหลักเพื่อทดสอบฟังก์ชันข้างต้น */
int main() {
    int arr[] = {200, 191, 112, -11, 330, 60};
    int n = 6;
    getresult(arr, n);
    return 0;
}

ผลลัพธ์

หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ —

ค่าต่ำสุด: -11 ค่าสูงสุด: 330