Я пытался понять пузырьковую сортировку. Реализуя свою собственную версию для практики, я реализовал ее следующим образом:
public int[] sort(int[] nums) {
int x = 0;
for (int i = 0; i < nums.length; i++) {
for (int j = 0; j < i; j++) {
System.out.println(++x);
if (nums[j] > nums[i]) {
int temp = nums[j];
nums[j] = nums[i];
nums[i] = temp;
}
}
}
return nums;
}
Обратите внимание, как внутренний l oop переходит от 0 к i.
Когда я гуглил Этот алгоритм, чтобы найти обычную реализацию, я нашел эту реализацию:
public int[] sortnew(int[] nums) {
int x = 0;
for (int i = 0; i < nums.length - 1; i++) {
for (int j = 0; j < nums.length - i - 1; j++) {
System.out.println(++x);
if (nums[j] > nums[j+1]) {
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
return nums;
}
Здесь я идет от 0 до длины массива - я - 1.
В обоих случаях количество отпечатков «х» одинаковы. Это, я считаю, указывает на то, что количество вычислений одинаково. Тогда какая именно разница между этими двумя практически? Спасибо!