我要排序的陣列,A,根據本成本模式排序:當比較花費任何時間
對於任何x值,形式A的分配[I] = x具有的成本1.另外,A [i] = A [j]的成本爲1.
其他操作,如比較和分配for x = A [i](其中x不是陣列)的成本爲0.
問題:
給一個下界排序的陣列A.你的答案應該是在正方面的精確表達式,而不是使用漸近記法所要求的最壞情況下的時間。
描述使用O(n)空間的排序算法。運行時應該與1中給出的下界完全匹配(確切地說,不是漸近地)。
描述對這個成本模型最優的就地排序算法。運行時應該完全匹配1中給出的邊界(完全不是漸近地)。
我嘗試:
ñ。這是因爲,在最糟糕的情況下,數組中的n個元素處於索引中,因此它們將不需要處理。因此,需要n個賦值才能按排序順序獲取數組。
我的算法psudo代碼:
def weird_sort(A): B = an array the same size of A C = an array of bools (default True) the same size of A for i in range(0, A.size): min = first index in c that is True for j in range(0, A.size): if (A[j] < A[min]) and (C[j]): min = j B[i] = A[min] C[i] = False A = B
我認爲這恰恰是N次跑,因爲我們正在進入一個指定任何唯一的一次是在最後一行,在那裏我們複製B的內容變成A.
- 不知道從哪裏開始。在我看來,爲了保持一切到位,我們必須交換數組A中的東西,但是我無法弄清楚如何去掉如何用n/2交換對數組進行排序。有人能讓我朝着正確的方向前進嗎?你也可以仔細檢查我的答案1和2嗎?
這可能是一個更好的問題https://cs.stackexchange.com/ – Stedy
這聽起來像循環排序發明的確切情況。 :-) – templatetypedef