Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是正确的BubbleSort算法吗?_Java_Bubble Sort - Fatal编程技术网

Java 这是正确的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++) {

我编写了以下代码,使用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++) {
            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特征,但有一个小小的变化
它们的实现方式会对它们的实际性能特征产生显著的影响。

我想你应该把这篇文章移到好的地方,如果你的测试用例成功了,那么为什么你认为它不正确呢?看,我觉得这像个泡泡。在什么意义上缺失?这个问题似乎是离题的,因为它应该是开着的似乎很好…输出与期望的输出有何不同?