← Back to Home
ការតម្រៀបបែបទង់ជាតិកូកតេល
បំរែបំរួលពីរទិសនៃការតម្រៀបបែបពពុះដែលឆ្លងកាត់បញ្ជីក្នុងទិសទាំងពីរ។
Visualization
Step 1 / 17
Speed:
Details
Analogy
ស្រមៃថាទង់ជាតិកូកតេលកំពុងផ្លាស់ទៅមុខ និងថយក្រោយ។ ក្បួនដោះស្រាយនេះ 'ញ័រ' អារេដោយតម្រៀបពីឆ្វេងទៅស្តាំ រួចពីស្តាំទៅឆ្វេង។
Purpose
ដើម្បីតម្រៀបអារេយ៉ាងមានប្រសិទ្ធភាពជាងការតម្រៀបបែបពពុះ ដោយស្លាប់រវាងការឆ្លងទៅមុខ និងថយក្រោយ។
Use Cases
មានប្រសិទ្ធភាពជាងការតម្រៀបបែបពពុះសម្រាប់បញ្ជីដែលមានធាតុដែលត្រូវការផ្លាស់ចម្ងាយឆ្ងាយ។
Algorithm Steps
Line 1
1
function cocktailShakerSort(array):
2
start = 0
3
end = length(array) - 1
4
swapped = true
5
while swapped:
6
swapped = false
7
for i = start to end - 1:
8
if array[i] > array[i + 1]:
9
swap(array[i], array[i + 1])
10
swapped = true
11
if not swapped: break
12
end = end - 1
13
swapped = false
14
for i = end - 1 down to start:
15
if array[i] > array[i + 1]:
16
swap(array[i], array[i + 1])
17
swapped = true
18
start = start + 1
19
return array
Current
Executed
Pending
Explanation
What's Happening?
Step 1/17
អារេដំបូង: [5, 1, 4, 2, 8, 0, 2]។
Updates with each step • Clickfor full view
Code Implementation
def cocktail_shaker_sort(arr):
n = len(arr)
start = 0
end = n - 1
swapped = True
while swapped:
swapped = False
# Forward pass
for i in range(start, end):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
swapped = True
if not swapped:
break
end -= 1
swapped = False
# Backward pass
for i in range(end - 1, start - 1, -1):
if arr[i] > arr[i + 1]:
arr[i], arr[i + 1] = arr[i + 1], arr[i]
swapped = True
start += 1
return arr