นิยามของการค้นหาข้อมูล
การค้นหาข้อมูล (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  หลัก