Page 62 - โครงสร้างข้อมูลและขั้นตอนวิธี
P. 62

15-52 โครงสร้างข​ ้อมูล​และ​ขั้นต​ อนว​ ิธี

       การท​ �ำงาน
       บรรทัด​ที่ 2-4	 ก�ำหนด​ค่าข​ อบ​บน f1 = 1 ขอบล​ ่าง f2 = 0 และ ค่าก​ ลาง mid = 2
       บรรทัด​ที่ 5-10 	เป็นการ​ก�ำหนด​ค่า​ขอบ​บน​ให้​เป็น​ตัวเลข​มาก​ท่ีสุด​ท่ี​น้อย​กว่า n พร้อม​ทั้ง​ก�ำหนด​ขอบ​ล่าง

                     โดยท�ำ​ซ้ําตราบใ​ดท​ ี่ ขอบ​บน f1 น้อยก​ ว่า n
       บรรทัดท​ ี่ 7 	 ปรับค​ ่า​ขอบ​บนใ​ห้​เป็นเ​ลข​ถัดไ​ป f1 = f1 + f2
       บรรทัดท​ ี่ 8 	 ปรับ​ค่า​ขอบ​ล่างใ​ห้​เป็น​เลข​ถัดไ​ป f2 = f1 - f2
       บรรทัดท​ ี่ 9 	 เพิ่ม​ค่าต​ �ำแหน่ง​กลาง mid = mid + 1
       บรรทัดท​ ี่ 11-12	หลังจ​ ากออก​จา​กลูป while ค่า​ขอบ​บนจ​ ะ​มากกว่า n ดังน​ ้ัน​ปรับ​ขอบ​บนแ​ ละ​ขอบ​ล่างใ​หม​่

                     โดยถ​ อย​ลงม​ า 1 ค่า f2 = f1 – f2 ตามด​ ้วย f1 = f1 – f2
       บรรทัดท​ ี่ 13 	 ปรับ​ค่า mid ให้​ลด​ลงอ​ ีก 1 ดังน​ ั้น mid = mid -1
       บรรทัด​ที่ 14 	 ให้ต​ �ำแหน่ง​แรกข​ องก​ าร​หาค​ ือ 0
       บรรทัดท​ ี่ 15–33 	 เป็นการ​ค้นหาค​ ่าที่ต​ ้องการ พร้อม​กับ​การป​ รับ​ช่วงก​ ารค​ ้นหา
       บรรทัดท​ ี่ 15-33 	 ก�ำหนดการท​ �ำ​ซ�้ำ ถ้า mid ยัง​มากกว่า 0
       บรรทัด​ที่ 17 	 ก�ำหนดต​ �ำแหน่ง​สืบค้น​เป็น index = first + f1
       บรรทัด​ท่ี 18 	ตรวจ​สอบ​ว่า​ค่า index มากกว่า n หรือ​ไม่ พร้อม​ท้ัง​ตรวจ​สอบ​ว่า​ค่าท่ี​สืบค้น​น้อย​กว่า​ค่า​

                     ของ​อารเ์ รย​ท์ ​ตี่ ำ� แหนง่ index หรอื เ​ปลา่ ถา้ เ​งอ่ื นไข​ใดเ​งอื่ นไข​หนง่ึ ​เปน็ จ​ รงิ ท​ ำ� ​บรรทดั ท​ ี่ 19-23
       บรรทัด​ที่ 20 	 ปรับค​ ่า mid ให้เ​ป็น mid = mid -1
       บรรทัด​ที่ 21 	 ปรับ​ค่า​ขอบ​ล่าง​ลง​มา f2 = f1 – f2
       บรรทัด​ที่ 22 	 ปรับค​ ่า​ขอบ​บน​ลงม​ า f1 = f1 – f2
       บรรทัดท​ ี่ 24 	 ตรวจส​ อบ​ว่า​ค่า x ท่ี​สืบค้นเ​ท่ากับค​ ่าอ​ าร์เรย์ท​ ่ีต​ �ำแหน่ง index หรือไ​ม่
       บรรทัด​ที่ 25 	 ถ้า​บรรทัดท​ ่ี 24 เป็น​จริง ให้​ส่งค​ ่า​กลับ​เป็น index
       บรรทัดท​ ี่ 26 	 ถ้า​เงื่อนไข​บรรทัดท​ ี่ 18 และ 24 ไม่​เป็นจ​ ริง ท�ำ​บรรทัดท​ ่ี 27-32
       บรรทัดท​ ี่ 28 	 ก�ำหนดค​ ่าที่​น�ำ​มาเ​พ่ิม​ส�ำหรับ​ต�ำแหน่งต​ ่อ​ไป first = index
       บรรทัดท​ ี่ 29	 ปรับค​ ่า mid เป็น mid = mid -2
       บรรทัด​ที่ 30 	 ปรับค​ ่าข​ อบ​บน f1 = f1 - f2
       บรรทัด​ที่ 31 	 ปรับค​ ่า​ขอบล​ ่าง f2 = f2 – f1
       บรรทัดท​ ี่ 34 	 ถ้า​วน​ซํ้าจน mid <= 0 แสดง​ว่า​ไม่​พบข​ ้อมูลใ​ห้​ส่งค​ ่า​กลับเ​ป็น -1

3. 	ตวั อยา่ ง​การท​ ำ�งานข​ อง​ขนั้ ​ตอน​วธิ กี ารค้นหาขอ้ มูลแบบฟโิ บนกั ซี

ตัวอยา่ ง​ที่ 15.11 จง​แสดง​การ​ค้นหา​ข้อมูล​ค่า 24 จาก​ข้อมูล​ที่​เรียง​ล�ำดับ​แล้ว ​จ�ำนวน 10 ตัว ด้วย​วิธี​การ​ค้นหา​แบบ​ฟิ
โบนักซี โดย​ข้อมูลม​ ีด​ ังนี้
ก�ำหนดให้

       A 	 =	 [5, 9, 13, 17, 24, 29, 34, 38, 42, 53]
       n	 = 	 10
       x = 	 24
   57   58   59   60   61   62   63   64   65   66   67