python的归并排序

归并排序是一种经典的分治排序算法,它的基本思想是将待排序的序列分成若干个子序列,分别进行排序,然后再将排好序的子序列合并成一个有序的序列。

下面是Python实现归并排序的代码:

def merge_sort(arr):
    if len(arr) <= 1:
        return arr
    
    mid = len(arr) // 2
    left_half = arr[:mid]
    right_half = arr[mid:]
    
    left_half = merge_sort(left_half)
    right_half = merge_sort(right_half)
    
    return merge(left_half, right_half)

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
    
    while i < len(left):
        result.append(left[i])
        i += 1
    
    while j < len(right):
        result.append(right[j])
        j += 1
    
    return result

# 测试代码
arr = [5, 3, 8, 6, 2, 7, 1, 4]
sorted_arr = merge_sort(arr)
print(sorted_arr)

运行上述代码,输出结果为 [1, 2, 3, 4, 5, 6, 7, 8],表示归并排序已经成功地对数组进行了排序。

在归并排序的代码中,merge_sort()函数是主要的排序逻辑,它通过递归将待排序序列不断分割成更小的子序列,最后再利用merge()函数将这些子序列合并成一个有序的序列。merge()函数是合并两个有序序列的逻辑,它通过比较两个子序列的元素大小来选择合适的元素添加到结果序列中。

归并排序的时间复杂度是 O(nlogn),空间复杂度是 O(n)。由于归并排序始终将序列分成两半进行排序,因此适用于对链表等其他数据结构的排序。

你可能感兴趣的:(python,python,排序算法,算法)