Page 47 - โครงสร้างข้อมูลและขั้นตอนวิธี
P. 47
ขั้นต อนว ิธีการค้นหาข้อมูล 15-37
2. ขั้นตอนว ธิ กี ารค้นหาขอ้ มลู แบบกระโดด
ข้ันต อนวิธี JumpSearch มีรายละเอียดดังน้ี
ข้อมูลเข้าป ระกอบด้วย
อาร์เรย์ข้อมูลที่เรียงล �ำดับไว้แล้ว A
จ�ำนวนข ้อมูลทั้งหมด n
ค่าท่ีต้องการค้นหา x
ข้อมูลที่ส ่งก ลับ
ถ้าพบข้อมูลที่สืบค้น ค่าที่ส ่งก ลับจะเป็นต �ำแหน่งของข ้อมูลในอาร์เรย์
ถ้าไม่พ บข้อมูลท ี่ส ืบค้น ค่าที่ส่งกลับจะเป็นต�ำแหน่งท่ีไม่มีจ ริงในอ าร์เรย์น่ันค ือ -1
Function JumpSearch (A, n, x)
1 BEGIN
/* กำ�หนดค่าที่จะกระโดด */
2 k := square_root(n)
3 step := k
4 prev := 1
/* หาช่วงที่น่าจะมีข้อมูล */
5 WHILE (step < n) AND (A[step] < x) DO
6 BEGIN
7 prev := step
8 step := step + k
9 END
10 IF ( step > n) THEN
11 step := n
12
13 IF ( A[step] = x ) THEN
14 RETURN step
15 /* สืบค้นข้อมูลภายในช่วงที่กำ�หนด */
16 WHILE (A[prev] < x) DO
17 prev := prev + 1
18 IF (prev = step) THEN
19 RETURN -1
20 END
21 /* ตรวจสอบว่าพบข้อมูลหรือไม่ */
22 IF (A[prev] = x) THEN
23 RETURN prev
24 ELSE
25 RETURN -1
26 END