Алгоритм сортировки методом прямого включения:
for i = 2 to n
x = a(i)
a(0) = x {a(0) - барьер}
j = i - 1
while x < a(j ) do
a( j +1) = a(j )
j = j - 1
endwhile
a( j +1) = x
next i
return
Для внутреннего цикла, организованного как цикл while , необходима постановка «барьера», без которого при отрицательных значениях ключей происходит потеря значимости и «зависание» компьютера.
Эффективность алгоритма:
Наилучшие оценки числа сравнений Cmin и перемещений Mmin встречаются в случае уже упорядоченной исходной последовательности элементов, наихудшие же оценки Сmax и Mmax - когда они первоначально расположены в обратном порядке.
Количество сравнений в худшем случае, когда массив отсортированпротивоположным образом, Сmax=n(n-1)/2, то есть порядок О(n2). Количество перестановок Mmax=Cmax+3(n-1), то есть порядок О (n2).
Алгоритм сортировки прямым выбором:
for i = 1 to n - 1
x = a(i)
k = i
for j = i + 1 to n
if a(j)<x then
k = j
x = a(k)
endif
next j
a(k) = a(i)
a(i) = x
next i
return
Эффективность алгоритма:
Сmax=n(n-1)/2,
Mmax=Сmax+3(n-1),
Mmin=3(n-1), Cmin=(n-1)
В худшем случае сортировка прямым выбором дает порядок n2, как и для числа сравнений, так и для числа перемещений.