การค้นหา (Searching) คืออะไร?
การค้นหาหมายถึงการหา Key Element จากรายการข้อมูล (List of Elements)
- หากพบ Element ที่ต้องการ เรียกว่า Successful Search
- หากไม่พบ เรียกว่า Unsuccessful Search
ภาษา C มีเทคนิคค้นหาหลัก 2 แบบ:
- Linear Search (การค้นหาแบบลำดับ)
- 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 จะอธิบายในบทความแยก