gpt4 book ai didi

java - Java 中使用 ArrayList 的基本冒泡排序

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:57 25 4
gpt4 key购买 nike

我正在实现一个比较器,但它不起作用,所以我想我应该编写一个基本的冒泡排序。

int[] numbers = { 5, 8, 14, 1, 5678 };
int tempVar;
for (int i = 0; i < numbers.length; i++)
{
for(int j = 0; j < numbers.length; j++)
{
if(numbers[i] > numbers[j + 1])
{
tempVar = numbers [j + 1];
numbers [j + 1]= numbers [i];
numbers [i] = tempVar;
}
}
}
for (int i = 0; i < numbers.length; i++)
{
System.out.println(numbers[i].toString());
}

本教程完全正确吗? https://blog.udemy.com/bubble-sort-java/

我按照示例将其应用于数组列表中的姓氏,但结果有点古怪。

String a;
String b;
Person c;
Person d;

for (int i=0; i< list.size(); i++){

for(int j=0; j< list.size()-1; j++){

a = list.get(i).getLastName();
b = list.get(j+1).getLastName();
c = list.get(i);
d = list.get(j+1);

if ( a.compareTo(b) < 0 ) {

Person temp = d;
list.set(j+1, c);
list.set(i, temp);
}
}
}

我真的很想掌握一些方法(比如弄清楚为什么我的比较器不起作用),但现在我只想让冒泡排序正常工作。谢谢。

最佳答案

在冒泡排序中,您只需要比较相邻元素并交换它们(取决于条件)。

如果您按升序排列而不是比较相邻元素并交换 if(arr[j]>arr[j+1])。这将在第一次迭代中将最大的元素移动到末尾。因​​此在外循环中有 n-1 次迭代来对数组进行排序,其中 n 是数组的长度。

先读这个 Bubble sort因为你提到的教程是完全错误的

更正代码

for (int i = 0; i < numbers.length-1; i++)
{
for(int j = 0; j < numbers.length-i-1; j++)
{
if(numbers[j] > numbers[j + 1])
{
tempVar = numbers [j + 1];
numbers [j + 1]= numbers [j];
numbers [j] = tempVar;
}
}
}

这是 working link

关于java - Java 中使用 ArrayList 的基本冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30951974/

25 4 0