【问题标题】:Time complexity of quickselect algorithm快速选择算法的时间复杂度
【发布时间】:2022-03-16 10:13:21
【问题描述】:

我不确定 Quickselect 算法的时间复杂度是多少(对于第 k 个最大元素),所以谁能帮帮我

def swap(arr,i,j):
    temp = arr[i]
    arr[i] = arr[j]
    arr[j] = temp

def partition(arr,left,right,p_index):
    pivot = arr[p_index]
    i = left-1

    for j in range(left,right):
        if arr[j] >= pivot:
            i += 1
            swap(arr,i,j)
    swap(arr,i+1,p_index)
    return i+1


def quickselect(arr,left,right,k):
    if left == right:
        return arr[left]

    p_index = right
    p_index = partition(arr,left,right,p_index)

    if p_index == k:
        return arr[p_index]
    elif p_index > k:
        return quickselect(arr,left,p_index-1,k)
    else:
        return quickselect(arr,p_index+1,right,k)

【问题讨论】:

标签: python quickselect


【解决方案1】:

平均时间复杂度从 O(n log(n)) 降低到 O(n),但最坏的情况仍然是 O(n^2)。

https://en.wikipedia.org/wiki/Quickselect

【讨论】:

    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 2012-07-06
    • 1970-01-01
    • 2020-05-09
    • 2015-04-20
    • 2013-04-26
    相关资源
    最近更新 更多