gpt4 book ai didi

java - 这是正确的冒泡排序算法吗?

转载 作者:行者123 更新时间:2023-12-02 06:18:30 27 4
gpt4 key购买 nike

我编写了以下代码来使用冒泡排序对数组值中的元素进行排序。这是正确的还是有什么遗漏?我的测试用例很好,但也许测试用例还缺少一些东西。

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;
}
}
}
}

最佳答案

您的代码是正确的,因为它将对数组进行排序。然而,它总是需要 N*(N-1) 次遍历数组。这不是用于实现的典型算法冒泡排序。典型的算法使用带有排序测试的重复循环。这在某种程度上更有效,因为它数组排序后立即终止(考虑以排序数组开始的情况)。

阅读Wikepedia article on bubble sort它很好地证明了这一点。

冒泡排序的稍微改进的伪代码版本如下所示:

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

这里的教训是,虽然你的算法和维基百科算法都具有相同的大 O 特征,但有一个小变化它们的实现方式可能会对它们的实际性能特征产生重大影响。

关于java - 这是正确的冒泡排序算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21237877/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com