นิยามของการค้นหาข้อมูล
การค้นหาข้อมูล (Searching)
นิยาม ของการค้นหาข้อมูล
· Searching คือ การค้นหาข้อมูล ซึ่งผลลัพธ์จะต้องบอกได้ว่าค้นหาเจอหรือไม่
· และในกรณีที่ค้นหาเจอจะต้องบอก ได้ว่าค้นหา เจอที่ตำแหน่งใด
Sequential Search
· การค้นหาข้อมูลวิธีนี้ เป็นการค้นหาในลักษณะเชิงเส้น เป็นวิธีง่ายที่สุด และก็เป็นวิธีที่ด้อยประสิทธิภาพกว่าวิธีอื่น
· แต่ก็เหมาะสมสำหรับการประมวลผล ข้อมูลกับบาง ประเภท เช่นงานกลุ่ม งานสำรองข้อมูล
· โดยหลักการคือเปรียบเทียบคีย์ ที่ต้องการค้น หา กับข้อมูลทีละตำแหน่งไปจนกว่าจะพบ หรือจนกว่าจะหมดข้อมูล
ตัวอย่าง
9 7 15 60 32 40 53 84 21 96
· การค้นหาข้อมูลจะต้องผ่านการ ตรวจสอบข้อมูล ที่อยู่ข้างหน้าระเบียนข้อมูลที่ต้องการทุกตัวจนกว่าจะพบข้อมูล
· โดยมีจำนวนครั้งของการเปรียบ เทียบ ดังนี้
· น้อยที่สุด = 1 ครั้ง (ข้อมูลที่ต้องการอยู่เป็นระเบียนแรก)
· มากที่สุด = จำนวนข้อมูลทั้งหมดในแฟ้มข้อมูล (ระเบียนสุดท้าย)
· โดยเฉลี่ย = 1/2 ของจำนวนข้อมูลทั้งหมดในแฟ้มข้อมูล
Sequential Search
· ถ้าข้อมูลในแฟ้มข้อมูลเรียงตาม ลำดับขั้นตอน การค้นหาจะทำได้เร็วขึ้น คือ ถ้าพบว่าค่าคีย์ของระเบียนข้อมูลมีค่ามากกว่าค่าของดัชนีก็สามารถสรุปได้ว่า ระเบียนข้อมูลที่ต้องการนั้นไม่อยู่ในแฟ้มข้อมูลนี้ และไม่จำเป็นต้องทำการค้นหาอีกต่อไป
· แต่ถ้าแฟ้มข้อมูลไม่ได้จัด เรียงลำดับจะต้อง ค้นหาข้อมูลในแฟ้มข้อมูลจนครบทุกตัว จึงจะสรุปได้ว่าไม่มีระเบียนข้อมูลที่ต้องการนั้นอยู่ภายในแฟ้มข้อมูลพบว่า ไม่มีข้อมูลที่ต้องการ พิจารณาประสิทธิภาพของการค้นหาได้เป็น O(n)
Binary Search
1. เปรียบเทียบค่าข้อมูลที่ต้องการค้นหากับ Primary Key ของข้อมูลระเบียนที่ 1
- ถ้าใช่ ระเบียนที่ต้องการให้ไปทำขั้นตอนที่ 7
- ถ้าไม่ให้ทำขั้นตอนต่อไป
2. เปรียบ เทียบค่าข้อมูลที่ต้องการค้นหากับ Primary Key ของข้อมูลระเบียนที่ n
- ถ้าใช่ ระเบียนที่ต้องการให้ไปทำขั้นตอนที่ 7
- ถ้าไม่ให้ทำขั้นตอนต่อไป
3. กำหนด จุดเริ่มต้นและจุดสุดท้ายของการค้นหา
4. เปรียบ เทียบค่าข้อมูลที่ต้องการค้นหากับ Primary Key ของข้อมูล ณ ตำแหน่งกึ่งกลางของชุดระเบียนข้อมูล
- ถ้าใช่ระเบียนที่ต้องการให้ข้ามไปทำขั้นตอนที่ 7
- ถ้าไม่ให้ทำขั้นตอนต่อไป
5. เปรียบเทียบข้อมูลที่ต้องการค้นหากับค่าของ Primary Key ของข้อมูล ณ ตำแหน่งกึ่งกลางของข้อมูลชุดระเบียบข้อมูล
- ถ้าค่าข้อมูลที่ต้องการค้นหามีค่ามากกว่า ให้เปลี่ยนตำแหน่งจุดเริ่มต้นเป็นตำแหน่งที่อยู่ทางขวาของตำแหน่งกึ่งกลาง นั้น
- ถ้าค่าข้อมูลที่ต้องการค้นหามีค่าน้อยกว่า ให้เปลี่ยนตำแหน่งจุดสุดท้าย เป็นตำแหน่งที่อยู่ก่อนหน้าตำแหน่งกึ่งกลาง นั้น
6. ตรวจสอบจำนวนครั้งของการ เปรียบเทียบเกิน n/3 ครั้งหรือไม่
- ถ้า ใช่ ให้แสดงข้อความแจ้งการค้นหาไม่พบ และไปทำในขั้นตอนที่ 8
- ถ้า ไม่ ให้ย้อนกลับไปทำตั้งแต่ขั้นตอนที่ 4 อีกครั้ง
7. แสดงข้อความแจ้งการค้นพบตำแหน่งที่เก็บข้อมูลที่ต้องการ
8. จบการค้นหา
Hashing Function
มี หลายฟังก์ชัน การเลือกใช้ขึ้นอยู่กับความเหมาะสมกับข้อมูล
1. Mod คือ การนำค่าคีย์มา Mod ด้วยค่า n ใดๆ ฟังก์ชัน mod จะให้ผลลัพธ์เป็นเศษที่ได้จากการหารเช่น
10 mod 3 = 1
5 mod 3 = 2
2. Mid - Square คือการนำคีย์มายกกำลังสองแล้วเลือกเฉพาะค่ากลางของข้อมูล จำนวนหลักขึ้นอยู่กับความต้องการในการใช้งาน
ตัวอย่าง เช่น คีย์คือ 12 ผ่านฟังก์ชัน Mid-Square คือ 12 ยกกำลัง 2 = 144 เลือกตำแหน่งกลางได้ค่าที่อยู่เป็น 4
3. Folding วิธีการพับตัวเลข
คือ การนำคีย์มาแบ่งเป็นส่วนๆ พับทบเข้าหากันแล้วหาผลรวม เช่น กำหนดตำแหน่งที่อยู่ไว้ 3 หลัก