← Back to Home
ការតម្រៀបបែបធីម
ក្បួនដោះស្រាយការតម្រៀបថេររួមបញ្ចូលគ្នា ដែលរចនាឡើងដើម្បីអនុវត្តបានល្អលើទិន្នន័យពិតប្រាកដ។
Visualization
Step 1 / 6
Speed:
Details
Analogy
ស្រមៃថាការរៀបចំបណ្ណាល័យធំ។ ជំនួសឱ្យការតម្រៀបសៀវភៅទាំងអស់ អ្នកចែកពួកវាទៅក្នុងផ្នែកតូចៗ តម្រៀបផ្នែកនីមួយៗ រួចបញ្ចូលពួកវា។
Purpose
ដើម្បីតម្រៀបទិន្នន័យយ៉ាងមានប្រសិទ្ធភាព ដោយប្រើចំណុចខ្លាំងនៃការតម្រៀបបញ្ចូល និងការតម្រៀបបញ្ចូលគ្នា។
Use Cases
ក្បួនដោះស្រាយលំនាំដើមក្នុង Python និង Java។ ល្អសម្រាប់ទិន្នន័យពិតប្រាកដ។
Algorithm Steps
Line 1
1
function timSort(array):
2
RUN = 32
3
n = length(array)
4
for start = 0 to n step RUN:
5
end = min(start + RUN - 1, n - 1)
6
insertionSort(array, start, end)
7
size = RUN
8
while size < n:
9
for start = 0 to n step 2 * size:
10
mid = start + size - 1
11
end = min(start + 2 * size - 1, n - 1)
12
if mid < end:
13
merge(array, start, mid, end)
14
size = size * 2
15
return array
Current
Executed
Pending
Explanation
What's Happening?
Step 1/6
អារេដំបូង: [5, 21, 7, 23, 19, 3, 16, 8]។ RUN = 32។
Updates with each step • Clickfor full view
Code Implementation
def insertion_sort(arr, left, right):
for i in range(left + 1, right + 1):
key = arr[i]
j = i - 1
while j >= left and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
def merge(arr, left, mid, right):
left_part = arr[left:mid + 1]
right_part = arr[mid + 1:right + 1]
i = j = 0
k = left
while i < len(left_part) and j < len(right_part):
if left_part[i] <= right_part[j]:
arr[k] = left_part[i]
i += 1
else:
arr[k] = right_part[j]
j += 1
k += 1
while i < len(left_part):
arr[k] = left_part[i]
i += 1
k += 1
while j < len(right_part):
arr[k] = right_part[j]
j += 1
k += 1
def tim_sort(arr):
RUN = 32
n = len(arr)
for start in range(0, n, RUN):
end = min(start + RUN - 1, n - 1)
insertion_sort(arr, start, end)
size = RUN
while size < n:
for start in range(0, n, 2 * size):
mid = start + size - 1
end = min(start + 2 * size - 1, n - 1)
if mid < end:
merge(arr, start, mid, end)
size *= 2
return arr