2016-03-30 39 views
0

我想知道如何將插入排序的輸出更改爲非遞增順序?例如,537就是753.同樣,運行時間是否與增加(最佳和最差情況)相同?修改插入排序算法不增加

僞代碼:

INSERTION-SORT(A) 
    for j = 2 to A.length 
     key = A[j] 
     // Insert A[j] into the sorted sequence A[1..j] 
     i = j - 1 
     while i > 0 and A[i] > key 
      A[i +1] = A[i] 
      i = i - 1 
     A[i + 1] = key 
+0

你是什麼意思537將是753?你的意思是你想重新排列每個數字中的數字以降序排列然後進行排序嗎? –

回答

1

運行時會被更改的影響。最好是說而不是不增加當談到計算機科學的數字。 遞增將是遞增。話雖如此,請參閱下面的代碼,瞭解您正在尋找的變化(特別注意while循環)。

for j = 2 to A.length 
    key = A[j] 
    i = j - 1 
    while i > 0 and A[i] < key 
     A[i + 1] = A[i] 
     i = i - 1 
    A[i + 1] = key 
+2

說「不增加」或「不減少」是很常見的。事實上,「降序」並不意味着與「不增加」相同的事物,因爲「降序」不允許重複元素。我不知道你認爲這些術語在計算機科學中沒有被使用。 – beaker