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