Back to Home

ការតម្រៀប​បែប​សែល

ការ​តម្រៀប​ប្រៀបធៀប​នៅ​នឹង​កន្លែង​ដែល​មាន​ប្រសិទ្ធភាព​ខ្ពស់។ វា​ជា​ទូទៅ​នៃ​ការ​តម្រៀប​បែប​បញ្ចូល ដែល​អនុញ្ញាត​ឱ្យ​មាន​ការ​ផ្លាស់ប្ដូរ​ធាតុ​ដែល​នៅ​ឆ្ងាយ​ពី​គ្នា។

Visualization

Step 1 / 12
Speed:

Details

Analogy

ស្រមៃ​ថា​កំពុង​តម្រៀប​សន្លឹក​បៀ​មួយ​สำรับ​ใหญ่។ แทนที่จะ​เปรียบเทียบ​សន្លឹក​បៀ​ที่​อยู่​ติด​กัน คุณ​จะ​តម្រៀប​សន្លឹក​បៀ​ที่​อยู่​ห่าง​กัน​ก่อน (ឧ. ทุกๆ​សន្លឹក​ที่ 10)។ นี่​จะ​ทำ​ให้​សន្លឹក​បៀ​เข้า​ที่​โดย​ประมาณ។ จากนั้น​คุณ​จะ​ลด 'គម្លាត' (ឧ. តម្រៀប​ทุกๆ​សន្លឹក​ที่ 5) และ​ทำ​ซ้ำ จนกระทั่ง​ใน​ที่สุด​คุณ​จะ​តម្រៀប​សន្លឹក​បៀ​ที่​อยู่​ติด​กัน។

Purpose

ដើម្បី​តម្រៀប​អារេ​ដោយ​ចាប់ផ្ដើម​ពី​គម្លាត​ធំ ហើយ​ค่อยๆ​ลด​มัน​ลง។ สำหรับ​แต่​ละ​គម្លាត វា​จะ​ทำ​ការ​តម្រៀប​แบบ​បញ្ចូល​លើ​ធាតុ​ที่​อยู่​ห่าง​กัน​เท่านั้น។

Use Cases

เป็น​ทางเลือก​ที่ดี​สำหรับ​รายการ​ขนาด​กลาง (มาก​ถึง​สอง​สาม​พัน​รายการ)။ มัน​เร็ว​กว่า​การ​តម្រៀប O(n²) แบบ​ง่ายๆ แต่​ไม่​ซับซ้อน​เท่า​การ​តម្រៀប O(n log n)។

Algorithm Steps

Line 1
1
gap = n / 2
2
while gap > 0:
3
for i = gap to n-1:
4
temp = arr[i]
5
j = i
6
while j >= gap and arr[j-gap] > temp:
7
arr[j] = arr[j-gap]
8
j -= gap
9
arr[j] = temp
10
gap /= 2
Current
Executed
Pending

Explanation

What's Happening?

Step 1/12

អារេដំបូង។ ចាប់ផ្តើមដោយ gap = 4។

Updates with each step • Clickfor full view

Code Implementation

def shell_sort(arr):
    n = len(arr)
    gap = n // 2
    while gap > 0:
        for i in range(gap, n):
            temp = arr[i]
            j = i
            while j >= gap and arr[j - gap] > temp:
                arr[j] = arr[j - gap]
                j -= gap
            arr[j] = temp
        gap //= 2
    return arr
ការតម្រៀប​បែប​សែល - Interactive Visualization | AlgoViz | AlgoViz