Back to Home

បញ្ហាទង់ជាតិហូឡង់

ក្បួនដោះស្រាយសម្រាប់តម្រៀបអារេនៃលេខ 0, 1 និង 2 ក្នុងមួយជុំ។

Visualization

Step 1 / 7
Speed:

Details

Analogy

ឈ្មោះនេះមកពីភារកិច្ចនៃការតម្រៀបឆ្នូតក្រហម ស បន្ទាត់ខៀវនៃទង់ជាតិហូឡង់។ ស្រមៃថាអ្នកមានលំដាប់ចៃដន្យនៃបាល់ពណ៌ក្រហម ស និងខៀវ។ អ្នកចង់រៀបចំពួកវាតាមលំដាប់ទង់ត្រឹមត្រូវ។ អ្នកអាចធ្វើនេះក្នុងមួយជុំដោយថែរក្សាចង្អុលបី៖ មួយសម្រាប់ផ្នែក 'ក្រហម' មួយសម្រាប់ផ្នែក 'ខៀវ' និងមួយទៀតសម្រាប់បាល់បច្ចុប្បន្នដែលអ្នកកំពុងមើល។ ផ្អែកលើពណ៌បាល់បច្ចុប្បន្ន អ្នកប្តូរវាទៅផ្នែកត្រឹមត្រូវ។

Purpose

ដើម្បីបែងចែកអារេទៅជាផ្នែកបីផ្អែកលើតម្លៃ pivot (0, 1 និង 2)។ វាជាឧទាហរណ៍បុរាណនៃបញ្ហាការបែងចែកបីផ្លូវ។

Use Cases

សាជីវកម្មរងសំខាន់ក្នុងក្បួនដោះស្រាយតម្រៀបមួយចំនួន ដូចជា Quick Sort កំណែមួយដែលដោះស្រាយសោសម្រាប់ដែលស្ទួនយ៉ាងមានប្រសិទ្ធភាព។

Algorithm Steps

Line 1
1
low = 0, mid = 0, high = n-1
2
while mid <= high:
3
if arr[mid] == 0:
4
swap arr[low] and arr[mid]
5
low++, mid++
6
else if arr[mid] == 1:
7
mid++
8
else: // arr[mid] == 2
9
swap arr[mid] and arr[high]
10
high--
Current
Executed
Pending

Explanation

What's Happening?

Step 1/7

អារេដំបូង។ Pointers: low=0, mid=0, high=5។ ធាតុបច្ចុប្បន្នគឺ arr[mid]=2។

Updates with each step • Clickfor full view

Code Implementation

def sort_012(arr):
    low, mid, high = 0, 0, len(arr) - 1
    while mid <= high:
        if arr[mid] == 0:
            arr[low], arr[mid] = arr[mid], arr[low]
            low += 1
            mid += 1
        elif arr[mid] == 1:
            mid += 1
        else: # arr[mid] == 2
            arr[mid], arr[high] = arr[high], arr[mid]
            high -= 1
    return arr
បញ្ហាទង់ជាតិហូឡង់ - Interactive Visualization | AlgoViz | AlgoViz