首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

合并排序与线性排序:用Python证明时间复杂性

合并排序和线性排序是两种常见的排序算法。下面是对这两种算法的介绍和时间复杂性证明的Python代码示例。

  1. 合并排序(Merge Sort): 合并排序是一种分治算法,它将待排序的列表递归地分成两个子列表,直到每个子列表只有一个元素。然后,将这些子列表按照顺序合并,直到最终得到完全排序的列表。

合并排序的时间复杂性为O(nlogn),其中n是待排序列表的长度。

Python代码示例:

代码语言:txt
复制
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)。

  1. 线性排序(Linear Sort): 线性排序是一类排序算法,它们通过遍历待排序列表的元素,根据元素的值将其放入相应的位置,从而实现排序。线性排序包括计数排序(Counting Sort)、桶排序(Bucket Sort)和基数排序(Radix Sort)等。

计数排序的时间复杂性为O(n+k),其中n是待排序列表的长度,k是待排序列表中的最大值。

Python代码示例(计数排序):

代码语言:txt
复制
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代码示例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券