บทที่ 5 เทคนิคการค้นหาข้อมูล (Searching Techniques) โดยนายบุญค้ำ จุลเจือ วิทยาลัยชุมชนตราด
ความนำ อาจเรียกอีกอย่างหนึ่งว่า Storage and Retrieval of Information หรือ Table lookup ซึ่งทั้งหมดคือกระบวนการในการเก็บข้อมูลลงคอมพิวเตอร์ จากนั้นทำการค้นหาข้อมูลที่ต้องการให้เร็วที่สุด การค้นหาข้อมูลอาจเสียเวลามาก เราจึงต้องเลือกวิธีค้นหาข้อมูลที่เหมาะสม เทคนิคการค้นหาข้อมูล 1. การค้นหาแบบลำดับ 2. การค้นหาแบบบล็อก 3. การค้นหาตามความน่าจะเป็น 4. การค้นหาแบบไบนารี
การค้นหาแบบลำดับ (Sequential Search หรือ Linear Search) เป็นวิธีที่นิยมกันมาก เพราะเขียนโปรแกรมง่าย ใช้ได้กับตารางที่เรียงลำดับหรือไม่เรียงลำดับก็ได้ การค้นหาแบบนี้ต้องเปรียบเทียบตารางตั้งแต่ต้นจนพบระเบียนที่ต้องการ ตารางข้อมูลที่ไม่ได้เรียงลำดับจะหาข้อมูลได้ช้ากว่าตารางที่เรียงตามลำดับ
ตารางแบบไม่เรียงลำดับ ตารางที่เรียงตามลำดับ ตารางที่ไม่เรียงตามลำดับ Kอยู่ในตาราง หาช่วงคีย์ <=K หาจนพบ K ไม่อยู่ในตาราง หยุดหาเมื่อคีย์มาค่ามากกว่าK หาจนหมดตาราง 18 3 39 70 27 8 1 30 14 49 16 61 19 90 7 38 23 80 31 95 35 6 4 72 42 60 45 33 53 15 26 100 44 74 40 21 12 78 55 10 ตารางแบบไม่เรียงลำดับ ตารางแบบเรียงลำดับ 1 3 4 6 7 8 10 12 14 15 16 18 19 21 23 26 27 30 31 33 35 38 39 40 42 44 45 49 53 55 60 61 70 72 74 78 80 90 95 100 1. หากต้องการค้นหา 26 ต้องค้นหากี่ครั้ง .......... 2. หากต้องการค้นหา 20 ต้องค้นหากี่ครั้ง ..........
การค้นหาแบบบล๊อก(Block Search) ระเบียนข้อมูลต้องเรียงลำดับกันและรวมกลุ่มเป็นบล็อก การค้นหาจะค้นหาทีละบล๊อกโดยเปรียบเทียบกับคีย์ที่มีค่าสูงสุดในแต่ละบล๊อก เริ่มจากบล็อกที่ 1 ไปเรื่อยๆ จนพบบล็อกใดที่มีค่าคีย์สูงกว่าค่าคีย์ที่ต้องการ จะหยุดเปรียบเทียบกับบล็อกอื่นที่เหลือ แต่จะค้นหาแบบลำดับในบล็อกนั้นแทนจนพบคีย์ที่ต้องการ หากไม่พบแสดงว่าไม่มีค่าคีย์ที่ต้องการในตารางนี้ สมมุติต้องการค้นหาคีย์ 38 ครั้งที่ 1 คีย์สูงสุดในแต่ละบล๊อก คีย์ที่ต้องการ 1 15 < 38 2 33 3 55 >= 4 100
การค้นหาตามความน่าจะเป็น (Probability Serch) เราต้องทราบความถี่ของการเกิดข้อมูลแต่ละคีย์ ข้อมูลคีย์ความถี่มากที่สุดจะเก็บในตำแหน่งแรกของตาราง ข้อมูลที่มีความถี่รองลงมาก็จะถูกเก็บในตำแหน่งถัดไปเรื่อยๆ จนถึงข้อมูลตัวสุดท้าย ด้วยวิธีนี้เราจะค้นหาคีย์ที่ใช้บ่อยได้รวดเร็วมา แต่คีย์ที่ใช้น้อยจะค้นหาได้นาน เช่น ตัวอักษรแรกในชื่อคนไทยจากการสำรวจมักพบตัวอักษร ส ก และขึ้นต้นด้วย ฒ ฬ น้อยมากหรือไม่มีเลย
การค้นหาแบบไบนารี (Binary Search) ค่าคีย์จะต้องเรียงตามลำดับ สามารถค้นหาได้รวดเร็ว โดยการเปรียบเทียบค่าคีย์กับคีย์ตำแหน่งกึ่งกลางตาราง ไปเรื่อยๆจนพบ ตัวอย่างต้องการค่าคีย์ 15 2 6 7 10 12 15 17 25 26 1 3 2
ตารางเปรียบเทียบการค้นหาแบบไบนารี และแบบลำดับ
แบบฝึกหัด