Java 为什么我的冒泡排序方法不起作用?
我想试着弄明白,我只是需要被指向正确的方向。请不要只写解决方案,我想知道我需要做什么才能使它工作Java 为什么我的冒泡排序方法不起作用?,java,sorting,bubble-sort,Java,Sorting,Bubble Sort,我想试着弄明白,我只是需要被指向正确的方向。请不要只写解决方案,我想知道我需要做什么才能使它工作 static void bubbleSort() { int [] a = {1,3,4,2,5}; int [] b = new int[a.length]; int j = 0; for(int c = 0;c <= a.length;c++){//this loop doesnt even do anything?
static void bubbleSort() {
int [] a = {1,3,4,2,5};
int [] b = new int[a.length];
int j = 0;
for(int c = 0;c <= a.length;c++){//this loop doesnt even do anything???
for(int i = 0;i<a.length-j;i++){
if(a[i]>a[i+1]){
b[i] = a[i+1];
b[i+1] = a[i];
j++;
}
else{
b[i] = a[i];
b[i+1] = a[i+1];
j++;
}
}
}
for(int i = 0; i< b.length ; i++)
System.out.println(b[i]);
}
static void bubbleSort(){
int[]a={1,3,4,2,5};
int[]b=新的int[a.长度];
int j=0;
对于(int c=0;c不是绝对确定的,但我认为这应该是正确的实现
static void bubbleSort() {
int [] a = {1,3,4,2,5};
for(int c = 0;c < a.length;c++){//now it does
for(int i = 0;i+1<a.length-c;i++){
if(a[i]>a[i+1]){
int tmp = a[i];
a[i] = a[i+1];
a[i+1] = tmp;
}
}
}
for(int i = 0; i< a.length ; i++)
System.out.println(a[i]);
}
static void bubbleSort(){
int[]a={1,3,4,2,5};
对于(intc=0;c
你一次又一次地运行a,但是你改变了b,你没有比较。所以你的第一个for循环没有做任何事情。你不需要j,c工作。因为如果你在内部循环中做了1个循环,最大的数字在最后,所以你不必再次检查它。
c-loop应该一直运行到c您的代码有很多问题-
1) 您不需要额外的数组“b”,气泡排序可以就地完成
2) 考虑使用“j”,将其替换为“c”,并检查这对循环的影响
3) 您的新排序数组出现在“b”中,并且仍然在每一步检查条件-
if(a[i]>a[i+1])
你不认为“b”在这里有作用吗
如果您仍然有问题,请考虑以上几点,并在本文中发表评论。您应该使用调试器逐行检查您的程序,以发现其行为与您所希望的不同之处。此外,如果您告诉我们什么不起作用,也会有所帮助。输出是什么?您希望输出是什么?您已经尝试了哪些导致改进的方法?你认为问题出在哪里?使用链接进行进一步的改进。祝你好运!:)提示:为什么要同时复制和排序?System.out打印什么?1, 3, 2, 4, 5? 如果要将结果保存在另一个数组中,则应将其保存在a而不是b中,并使用temp变量保存该值。c不做任何事情,你不能在你的代码中使用它。你只需要从c到a运行,基本上你只需要不断重复同样的东西。完全取消b
,只对a
进行排序。(在网上找到气泡排序的单词/图表描述,并按照它进行操作。)有一个家庭作业
标签,这意味着你不应该只给出正确的代码,再加上OP明确表示(即使在问题的原始版本中)他们不想得到代码,他们想理解代码。我建议删除代码,充实一下你的解释。我修正了他的程序,然后解释了它。他希望他的代码被修改,而不是你所做的新实现,我相应地编辑了我的评论。不管怎样,由于标签和OP显式指令,我认为您不应该包含代码