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

เทคนิคการค้นหา (Searching Techniques) ในภาษา C มีกี่แบบ?


การค้นหา (Searching) คืออะไร?

การค้นหาหมายถึงการหา Key Element จากรายการข้อมูล (List of Elements)

  • หากพบ Element ที่ต้องการ เรียกว่า Successful Search
  • หากไม่พบ เรียกว่า Unsuccessful Search

ภาษา C มีเทคนิคค้นหาหลัก 2 แบบ:

  1. Linear Search (การค้นหาแบบลำดับ)
  2. Binary Search (การค้นหาแบบทวิภาค)

1. Linear Search

  • ค้นหาแบบลำดับ ตรวจสอบทีละองค์ประกอบ
  • เทคนิคที่ง่ายที่สุด เข้าใจง่าย
  • ไม่จำเป็นต้องจัดเรียงข้อมูลก่อน (Unsorted)
  • ข้อจำกัด: ใช้เวลามาก ลดประสิทธิภาพระบบเมื่อข้อมูลเยอะ (O(n))

Input: รายการข้อมูลไม่เรียงลำดับ, Key ที่ต้องการค้นหา

Output: Success (พบ) / Unsuccessful (ไม่พบ)

ตัวอย่างโปรแกรม Linear Search

#include <stdio.h>
int main() {
    int a[50], n, i, key, flag = 0;
    printf("Enter number of elements: ");
    scanf("%d", &n);
    printf("Enter elements:\n");
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    printf("Enter key element to search: ");
    scanf("%d", &key);
    for (i = 0; i < n; i++) {
        if (a[i] == key) {
            flag = 1;
            break;
        }
    }
    if (flag == 1)
        printf("Search is successful");
    else
        printf("Search is unsuccessful");
    return 0;
}

ผลลัพธ์ตัวอย่าง:

Enter number of elements: 5
Enter elements: 12 45 13 67 78
Enter key element: 67
Search is successful

2. Binary Search (สรุปแนวคิด)

Binary Search** ต้องการข้อมูลที่ **เรียงลำดับแล้ว (Sorted)** ทำงานโดยแบ่งข้อมูลครึ่งๆเรื่อยๆ จนพบค่าที่ต้องการ เร็วกว่า Linear Search มาก (O(log n)) เหมาะสำหรับข้อมูลจำนวนมาก

รายละเอียด Binary Search จะอธิบายในบทความแยก