Bubblesort不适用于Java,元素不交换
我的测试代码如下:Bubblesort不适用于Java,元素不交换,java,bubble-sort,Java,Bubble Sort,我的测试代码如下: import java.util.Arrays; class Scratch { public static void main(String[] args) { int[] list = {5,4,1,651,68,7,486,49,3,4,6}; bubblesort(list); System.out.println(Arrays.toString(list)); } private stati
import java.util.Arrays;
class Scratch {
public static void main(String[] args) {
int[] list = {5,4,1,651,68,7,486,49,3,4,6};
bubblesort(list);
System.out.println(Arrays.toString(list));
}
private static void bubblesort(int[] a) {
int[] list = a;
for (int i = 0; i < list.length - 1; i++) {
for (int j = 0; j < list.length - i - 1; j++) {
if (list[j] > list[j + 1]) {
int temp = list[j];
list[j] = list[j + 1];
list[j] = temp;
}
}
}
}
}
我做了多次测试,比如使用return或设置另一个变量。但我的方法都不管用 简单看一下,我认为您的问题是您连续两次设置了
列表[j]
你应该在你的
语句的最后一行设置列表[j+1]=temp
,如果你的语句简单看一下,我想你的问题是你连续两次设置列表[j]
int temp = list[j]; list[j] = list[j + 1]; list[j+1] = temp;
您应该在您的if
语句的最后一行中设置列表[j+1]=temp
int temp = list[j]; list[j] = list[j + 1]; list[j+1] = temp;
您正在将列表[j]值分配给temp,并将temp值重新分配给列表[j],因此输出没有变化。所以那里没有发生交换
您正在将列表[j]值分配给temp,并将temp值重新分配给列表[j],因此输出没有变化。所以那里没有发生交换 将if块替换为该块
if (list[j] > list[j + 1]) {
int temp = list[j];
list[j] = list[j + 1];
list[j+1] = temp;
}
用此块替换if块
if (list[j] > list[j + 1]) {
int temp = list[j];
list[j] = list[j + 1];
list[j+1] = temp;
}
您是否使用调试器或使用print语句查看了这一过程?我在list[j]=list[j+1]之前和之后使用了print语句;对于列表[j],列表[j]没有改变look atlist[j]=list[j+1];列表[j]=温度代码>非常接近。您是否使用调试器或使用print语句查看了这一过程?我在list[j]=list[j+1]之前和之后使用了print语句;对于列表[j],列表[j]没有改变look atlist[j]=list[j+1];列表[j]=温度代码>接近。