我正试图了解气泡排序。在实现自己的版本以进行练习时,我以以下方式实现了它:
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;
}
注意内部循环如何从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到数组长度-i-1。
在两种情况下,“ x”的打印数量均相同。我相信这表明计算次数是相同的。那么实际上两者之间到底有什么区别? 谢谢!