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
ការតម្រៀបបែបទង់ជាតិកូកតេល - Interactive Visualization | AlgoViz | AlgoViz