Код:
public static void raschestkaSort(int[] a){
for(int d = a.length - 2; d >= 0; d--){
for(int i = 0; i <= (a.length - 2) - d; i++){
if(a[i] > a[i + d + 1]){
swap(a, i, i + d + 1);
}
}
}
}
private static void swap(int[] a, int from, int to) {
int temp = a[from];
a[from] = a[to];
a[to] = temp;
}
В наихудшем случае сложность алгоритма должна быть равна O(1 + 2 + 3 + ... + (n - 1)). В вики же - O(n^2). Может, я неправильно считаю сложность?
P.S.: И действительно, если запустить сортировку с таким кодом:
public static void raschestkaSort(int[] a){
int countOfComparing = 0;
for(int d = a.length - 2; d >= 0; d--){
for(int i = 0; i <= (a.length - 2) - d; i++){
countOfComparing++;
if(a[i] > a[i + d + 1]){
swap(a, i, i + d + 1);
}
}
}
System.out.println(countOfComparing);
}
То для 14 элементов сравнений будет 91. А это близко не O(n^2)

1+2+3+...+(n-1) = (n-1)*n/2Вопросы есть? – Harry Feb 12 '20 at 15:36(1 + (n - 1)) * n/2, я ошибаюсь? – Miron Feb 12 '20 at 15:38n^2 / 2, но это же все равно меньше, чем в вики. В целых 2 раза – Miron Feb 12 '20 at 15:39