24
//
определение индекса среднего элемента
if (tmp
right=m-1; //
сдвиг правой или
else left=m+1; //
левой границы
}
for (int j=i-1; j>=left; j--)
a[j+1] = a[j];
//
сдвиг элементов
//
размещение элемента в нужном месте
a[left]=tmp;
}
}
Число сравнений
C~N*log
2
N
, так как поиск
места вставки осуществ-
ляется только в одной части массива. Но это улучшение касается только чис-
ла сравнений. К сожалению, это улучшение не является решающим, посколь-
ку пересылка элементов более трудоемкая операция. Поэтому число переста-
новок по-прежнему
имеет временную сложность ~N
2
. Соответственно, ско-
рость роста и для этой модификации алгоритма
O(N
2
).
Для массивов больших размеров сортировка
вставками оказывается
очень неэффективным методом ввиду большого числа перемещений элемен-
тов. Очевидно, что гораздо эффективнее переставлять только некоторые эле-
менты и на большие расстояния. Ниже будет рассмотрен метод сортировки,
основанный на этой идее и известный как сортировка Шелла.
2.2.3. С
Do'stlaringiz bilan baham: