自然数数组的排序
題目:給定一個長度為N的整型數組arr,其中有N 個互不相等的自然數1~N。請實現arr的排序,但是不要把下標0~N-1位置上的數通過直接賦值的方式替換成1~N
要求:時間復雜度為O(N),額外空間復雜度為O(1)
解答:
arr在調整之后應該是下標從0到N-1的位置上依次放著1~N,即arr[index] = index + 1
1、從左到右遍歷arr,假設當前遍歷到i位置
2、如果arr[i] = i + 1, 說明當前的位置不需要調整,繼續遍歷下一個位置
3、如果arr[i] = i + 1, 說明此時i 位置的數arr[i]不應該放在i位置上,接下來繼續進行跳的過程
def sort1(L):if L == None or len(L) < 2:return Lfor i in range(len(L)):tmp = L[i]while tmp != i+1:tt = L[tmp-1]L[tmp-1] = tmptmp = tt?
總結
- 上一篇: 需要排序的最短子数组长度
- 下一篇: 生成窗口最大值数组