第43天sort 的复杂运用 | 对二维数组与结构体实现自定义排序

Posted 执 梗

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第43天sort 的复杂运用 | 对二维数组与结构体实现自定义排序相关的知识,希望对你有一定的参考价值。

本文已收录于专栏

python数据结构与算法第十三天归并排序

1.代码实现

def merge_sort(alist):
    if len(alist) <= 1:
        return alist
    # 二分分解
    num = len(alist)/2
    left = merge_sort(alist[:num])
    right = merge_sort(alist[num:])
    # 合并
    return merge(left,right)

def merge(left, right):
    ‘‘‘合并操作,将两个有序数组left[]和right[]合并成一个大的有序数组‘‘‘
    #left与right的下标指针
    l, r = 0, 0
    result = []
    while l<len(left) and r<len(right):
        if left[l] < right[r]:
            result.append(left[l])
            l += 1
        else:
            result.append(right[r])
            r += 1
    result += left[l:]
    result += right[r:]
    return result

alist = [54,26,93,17,77,31,44,55,20]
sorted_alist = mergeSort(alist)
print(sorted_alist)

2.注意:

(1)归并排序采用的先拆分后合并的思想;递归拆分到不能继续拆分时停止拆分,然后进行比较,最后递归合并

3.时间复杂度

最优时间复杂度:O(nlogn)

最坏时间复杂度:O(nlogn)

稳定性:稳定

 

以上是关于第43天sort 的复杂运用 | 对二维数组与结构体实现自定义排序的主要内容,如果未能解决你的问题,请参考以下文章

Vector容器 二维数组sort()排序

python数据结构与算法第十三天归并排序

第42天Arrays.sort 与 Collections.sort 应用 | 整形数组与集合的排序

c#中array.sort()用法

如何使用Arrays.sort()对二维数组排序

java数据结构与算法:稀疏数组的讲解运用

(c)2006-2024 SYSTEM All Rights Reserved IT常识