+6 投票
分类:算法优化 | 用户: 8 5 3 (1.4k 分)
重新分类 用户:
我采用冒泡法对一个数组进行排序,但我发现如果数组初始为反序时,其时间复杂度会很高,能否提供一种方法,使得我的排序算法在计算时间上变得稳定。

def bubble_sort(lst):

    n = len(lst)

    for i in range(n):

        for j in range(1, n - i):

            if lst[j - 1] > lst[j]:

                lst[j - 1], lst[j] = lst[j], lst[j - 1]

    return lst

1个回答

+2 投票
用户:
采纳于 用户:
 
已采纳
直接进行递归会使得时间复杂度大大增加,故而我们从两边同时递归

def quick_sort(li):

    if len(li) <= 1:

        return li

    else:

        left = []

        right = []

        mid = li[0]

        for i in range(1,len(li)):

            if mid > li[i]:

                left.append(li[i])

            else:

                right.append(li[i])

        return quick_sort(left) + [mid] +quick_sort(right)

print(li1)

print(quick_sort(li1))
欢迎来到 在线问答系统 ,有什么不懂的可以尽管在这里提问,你将会收到社区其他成员的回答。
...