2016-03-30 21 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