簡體   English   中英

如何應用某些列表索引在python中排序

[英]how to apply certain list index to sort in python

我被要求對下面代碼中的k messed array進行排序。 我必須將complexitynlogn 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM