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