Back to Home

ការស្វែងរក​បែប​លោត

ក្បួន​ដោះស្រាយ​ការ​ស្វែងរក​សម្រាប់​អារេ​ដែល​បាន​តម្រៀប។ គំនិត​ជា​មូលដ្ឋាន​គឺ​ពិនិត្យ​ធាតុ​តិច​ជាង​មុន​ដោយ​លោត​ទៅ​មុខ​តាម​ជំហាន​ថេរ។

Visualization

Step 1 / 10
Speed:

Details

Analogy

ลอง​นึก​ภาพ​การ​หา​หน้า​ใน​หนังสือ แทนที่จะ​พลิก​ที​ละ​หน้า (การ​ค้นหา​เชิง​เส้น) คุณ​จะ​กระโดด​ไป​ข้าง​หน้า​เป็น​บทๆ เมื่อ​คุณ​กระโดด​ผ่าน​หน้าที่​คุณ​กำลัง​มอง​หา คุณ​จะ​กลับ​ไป​ยัง​บท​ก่อน​หน้า​และ​พลิก​หน้า​ที​ละ​หน้า​เพื่อ​ค้นหา។

Purpose

เพื่อ​ค้นหา​เป้าหมาย​ใน​อาร์เรย์​ที่​เรียง​ลำดับ​โดย​การ​กระโดด​ไป​ข้าง​หน้า​เป็น​บล็อก แล้ว​ทำ​การ​ค้นหา​เชิง​เส้น​ใน​บล็อก​ที่​ระบุ เป็น​การ​ประนีประนอม​ระหว่าง​การ​ค้นหา​เชิง​เส้น​และ​ไบนารี។

Use Cases

ดี​กว่า​การ​ค้นหา​เชิง​เส้น แต่​ไม่​ดี​เท่า​การ​ค้นหา​ไบนารี สามารถ​มี​ประโยชน์​ใน​ระบบ​ที่​การ​กระโดด​กลับ​มี​ค่า​ใช้​จ่าย​สูง។

Algorithm Steps

Line 1
1
step = sqrt(n)
2
prev = 0
3
while arr[min(step, n)-1] < target:
4
prev = step
5
step += sqrt(n)
6
if prev >= n: return -1
7
while arr[prev] < target:
8
prev++
9
if prev == min(step, n): return -1
10
if arr[prev] == target: return prev
11
return -1
Current
Executed
Pending

Explanation

What's Happening?

Step 1/10

ស្វែងរកเป้าหมาย 55។ ប្រវែងអារេគឺ 12 ដូច្នេះជំហានលោតគឺ sqrt(12) ≈ 3។

Updates with each step • Clickfor full view

Code Implementation

import math

def jump_search(arr, target):
    n = len(arr)
    step = int(math.sqrt(n))
    prev = 0
    while arr[min(step, n) - 1] < target:
        prev = step
        step += int(math.sqrt(n))
        if prev >= n:
            return -1
    while arr[prev] < target:
        prev += 1
        if prev == min(step, n):
            return -1
    if arr[prev] == target:
        return prev
    return -1
ការស្វែងរក​បែប​លោត - Interactive Visualization | AlgoViz | AlgoViz