以下使用内置排序函数的函数的时间复杂度是多少?
What is the time complexity of the following function, that uses buit-in sorted function?
我正在准备面试,想知道我编写的以下代码中 find_missing 函数的时间复杂度是多少,该函数在1 到 99 之间的未排序值列表。我对复杂性理论相当陌生,在使用内置 sorted 函数时不确定如何正确计算它。
def find_missing(num_array):
num_array = sorted(num_array)
print(num_array)
for k in range(len(num_array)-1):
if num_array[k] == num_array[k+1] - 1:
continue
else:
return num_array[k] + 1
Python内置排序函数是一个自定义排序函数,名为Timsort
,时间复杂度为O(n log n)
.
维基百科中的更多内容here
排序算法通常在 O(n log(n))
到 O(n²)
之间。内置排序函数通常是O(n log(n))
。您的 for 循环也是 O(n)
,因此您算法的时间复杂度为 O(n log(n)) + n)
,即 O(n log(n))
。
并且因为您在第一行创建了一个新数组,所以内存复杂度为 O(n)
此外,您可以使用散列 table 来改善时间和内存复杂度。
我正在准备面试,想知道我编写的以下代码中 find_missing 函数的时间复杂度是多少,该函数在1 到 99 之间的未排序值列表。我对复杂性理论相当陌生,在使用内置 sorted 函数时不确定如何正确计算它。
def find_missing(num_array):
num_array = sorted(num_array)
print(num_array)
for k in range(len(num_array)-1):
if num_array[k] == num_array[k+1] - 1:
continue
else:
return num_array[k] + 1
Python内置排序函数是一个自定义排序函数,名为Timsort
,时间复杂度为O(n log n)
.
维基百科中的更多内容here
排序算法通常在 O(n log(n))
到 O(n²)
之间。内置排序函数通常是O(n log(n))
。您的 for 循环也是 O(n)
,因此您算法的时间复杂度为 O(n log(n)) + n)
,即 O(n log(n))
。
并且因为您在第一行创建了一个新数组,所以内存复杂度为 O(n)
此外,您可以使用散列 table 来改善时间和内存复杂度。