[英]how to apply certain list index to sort in python
我被要求对下面代码中的k messed array
进行排序。 我必须将complexity
从nlogn to nlogk
降低nlogn to nlogk
。
arr = [3,2,1,4,5,6,8,10,9]
k = 2
def sortKmessedarr(arr, k):
i = 1
j = 0
n = len(arr)
while i < n:
if arr[i] > arr[i-1]:
pass
else:
arr[i-1:i+k].sort() # How to sort elements between two specific indexs
i += 1
sortKmessedarr(arr, k)
print(arr)
我认为如果我采用这种方法,它将成为nlogk
但是如何在两个indexes.
之间应用sort()
indexes.
我还尝试了以下另一种方法:
arr = [3,2,1,4,5,6,8,10,9]
k = 2
def sortKmessedarr(arr, k):
def merge(arr):
arr.sort()
print(arr)
i = 1
j = 0
n = len(arr)
while i < n:
if arr[i] > arr[i-1]:
pass
else:
merge(arr[i-1:i+k])#.sort()
i += 1
sortKmessedarr(arr, k)
print(arr)
但是仍然没有运气
您可以将sorted
与slice分配一起使用,以在语法上获得预期的效果,但是我不确定对性能(内存或速度)的影响:
arr[i-1:i+k] = sorted(a[i-1:i+k])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.