合并排序和线性排序是两种常见的排序算法。下面是对这两种算法的介绍和时间复杂性证明的Python代码示例。
合并排序的时间复杂性为O(nlogn),其中n是待排序列表的长度。
Python代码示例:
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
result = []
i = j = 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
# 示例用法
arr = [5, 2, 9, 1, 7, 6]
sorted_arr = merge_sort(arr)
print(sorted_arr)
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。
计数排序的时间复杂性为O(n+k),其中n是待排序列表的长度,k是待排序列表中的最大值。
Python代码示例(计数排序):
def counting_sort(arr):
max_val = max(arr)
count = [0] * (max_val + 1)
sorted_arr = [0] * len(arr)
for num in arr:
count[num] += 1
for i in range(1, max_val + 1):
count[i] += count[i - 1]
for num in arr:
sorted_arr[count[num] - 1] = num
count[num] -= 1
return sorted_arr
# 示例用法
arr = [5, 2, 9, 1, 7, 6]
sorted_arr = counting_sort(arr)
print(sorted_arr)
推荐的腾讯云相关产品:腾讯云云数据库MySQL和腾讯云云函数(SCF)。
以上是对合并排序和线性排序的介绍和时间复杂性证明的Python代码示例。
领取专属 10元无门槛券
手把手带您无忧上云