Java 这是正确的BubbleSort算法吗?
我编写了以下代码,使用BubbleSort对数组值中的元素进行排序。这是正确的还是遗漏了什么?我的测试用例很好,但可能是测试用例也遗漏了一些东西Java 这是正确的BubbleSort算法吗?,java,bubble-sort,Java,Bubble Sort,我编写了以下代码,使用BubbleSort对数组值中的元素进行排序。这是正确的还是遗漏了什么?我的测试用例很好,但可能是测试用例也遗漏了一些东西 public void sort(ValuePair[] values) { ValuePair value = null; for (int i = 0; i < values.length; i++) { for (int j = 1 + i; j < values.length; j++) {
public void sort(ValuePair[] values) {
ValuePair value = null;
for (int i = 0; i < values.length; i++) {
for (int j = 1 + i; j < values.length; j++) {
if (values[i].getValue() > values[j].getValue()) {
value = values[j];
values[j] = values[i];
values[i] = value;
}
}
}
}
public void排序(ValuePair[]值){
ValuePair值=null;
对于(int i=0;i值[j].getValue()){
值=值[j];
值[j]=值[i];
数值[i]=数值;
}
}
}
}
您的代码是正确的,因为它将对数组进行排序。但是,它始终需要在阵列上进行N*(N-1)次传递。这不是
用于实现的典型算法
泡沫式的。典型的算法使用重复循环,并对排序结果进行测试。这在某种程度上更有效,因为它
数组排序后立即终止(考虑从排序数组开始的情况)
阅读这篇文章,它很好地说明了这一点
冒泡排序的伪代码版本有点改进,如下所示:
procedure bubbleSort( A : list of sortable items )
n = length(A)
repeat
swapped = false
for i = 1 to n-1 inclusive do
if A[i-1] > A[i] then
swap(A[i-1], A[i])
swapped = true
end if
end for
n = n - 1
until not swapped
end procedure
这里的教训是,虽然您的算法和Wikepedia算法都具有相同的大O特征,但有一个小小的变化
它们的实现方式会对它们的实际性能特征产生显著的影响。我想你应该把这篇文章移到好的地方,如果你的测试用例成功了,那么为什么你认为它不正确呢?看,我觉得这像个泡泡。在什么意义上缺失?这个问题似乎是离题的,因为它应该是开着的似乎很好…输出与期望的输出有何不同?