gpt4 book ai didi

java - 使用 boolean 值进行冒泡排序以确定数组是否已排序

转载 作者:行者123 更新时间:2023-12-01 23:26:36 26 4
gpt4 key购买 nike

我有以下冒泡排序代码,但它根本不排序。如果我删除 boolean 值那么它工作正常。我知道,由于我的 a[0] 小于所有其他元素,因此没有执行交换,任何人都可以帮助我。

package com.sample;

public class BubleSort {
public static void main(String[] args) {
int a[] = { 1, 2, 4, 5, 6, 88, 4, 2, 4, 5, 8 };
a = sortBuble(a);
for (int i : a) {
System.out.println(i);
}

}

private static int[] sortBuble(int[] a) {
boolean swapped = true;
for (int i = 0; i < a.length && swapped; i++) {
swapped = false;
System.out.println("number of iteration" + i);

for (int j = i+1; j < a.length; j++) {

if (a[i] > a[j]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
swapped = true;
}
}
}

return a;
}
}

最佳答案

这本质上与你的相同,但是工作并且效率更高:

private static int[] bubblesort(int[] nums)
{
boolean done = false;

for (int i = 0; i < nums.length && !done; i++)
{
done = true;

for (int j = nums.length-1; j > i; j--)
{
if (nums[j] < nums[j-1])
{
int temp = nums[j];
nums[j] = nums[j-1];
nums[j-1] = temp;
done = false;
}
}
}

return nums;
}

在第 ith 次迭代结束时,我们知道前 i 个元素已排序,因此我们不需要再查看它们。我们需要 boolean 值来确定是否需要继续。如果没有进行交换,那么我们就完成了。我们可以删除 boolean 值,它仍然可以工作,但效率会降低。

关于java - 使用 boolean 值进行冒泡排序以确定数组是否已排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19886984/

26 4 0
文章推荐: java - 使用 NOLOCK 消除具有悲观锁定的应用程序的死锁
文章推荐: java - 如何使用java中的哈希集来确定字符串是否包含有效字符?
文章推荐: java - onSaveInstanceState 和 onRestoreInstanceState 似乎不起作用
文章推荐: java - ClassName 的原始类型是否等同于 ClassName