bubbleSort和swap方法不起作用[Java]
总的来说,每当我调用此方法对数组进行排序时,它都会停止,就像在等待响应一样。知道它为什么不起作用吗bubbleSort和swap方法不起作用[Java],java,methods,swap,bubble-sort,Java,Methods,Swap,Bubble Sort,总的来说,每当我调用此方法对数组进行排序时,它都会停止,就像在等待响应一样。知道它为什么不起作用吗 public void bubbleSort(){ boolean finished = false; boolean swapOccurred = false; int i = 0; int next = i + 1; while (finished == false) { for (; i < theArray.leng
public void bubbleSort(){
boolean finished = false;
boolean swapOccurred = false;
int i = 0;
int next = i + 1;
while (finished == false)
{
for (; i < theArray.length - 1; i++)
{
if (theArray[i] > theArray[next])
{
swapValues(theArray[i], theArray[next]);
swapOccurred = true;
}
}
if (swapOccurred == false)
{
finished = true;
}
}
}
private void swapValues(int i, int next) {
int temp;
temp = i;
i = next;
next = temp;
}
public void bubbleSort(){
布尔完成=假;
布尔swapOccurred=false;
int i=0;
int next=i+1;
while(finished==false)
{
对于(;i阵列[next])
{
swapvalue(数组[i],数组[next]);
swapOccurred=真;
}
}
if(swapocurred==false)
{
完成=正确;
}
}
}
私有void交换值(int i,int next){
内部温度;
温度=i;
i=下一个;
下一个=温度;
}
如果是java,那么
i
变量仅在swap方法内更改值,它们与数组的单元格无关李>
如果是java,那么
i
变量仅在swap方法内更改值,它们与数组的单元格无关李>
如果是java,那么
i
变量仅在swap方法内更改值,它们与数组的单元格无关李>
如果是java,那么
i
变量仅在swap方法内更改值,它们与数组的单元格无关李>
问题在于你的交换 在C语言中,参数是按值传递的,因此当您进行交换时,传入的值不会受到影响,因此不会发生任何事情。您需要传入指向数字的指针(然后在其中取消引用): 然后用要交换的变量的地址调用它:
swapValues(&theArray[i], &theArray[next]);
Edit:Ha-@Zielu看到了Java,我看到了C。这两种情况下都存在相同的问题,正如@Zielu指出的,您还需要增加下一个。我相信你实际上只是想用[I+1]作为你的索引来代替下一个。问题在于你的掉期 在C语言中,参数是按值传递的,因此当您进行交换时,传入的值不会受到影响,因此不会发生任何事情。您需要传入指向数字的指针(然后在其中取消引用): 然后用要交换的变量的地址调用它:
swapValues(&theArray[i], &theArray[next]);
Edit:Ha-@Zielu看到了Java,我看到了C。这两种情况下都存在相同的问题,正如@Zielu指出的,您还需要增加下一个。我相信你实际上只是想用[I+1]作为你的索引来代替下一个。问题在于你的掉期 在C语言中,参数是按值传递的,因此当您进行交换时,传入的值不会受到影响,因此不会发生任何事情。您需要传入指向数字的指针(然后在其中取消引用): 然后用要交换的变量的地址调用它:
swapValues(&theArray[i], &theArray[next]);
Edit:Ha-@Zielu看到了Java,我看到了C。这两种情况下都存在相同的问题,正如@Zielu指出的,您还需要增加下一个。我相信你实际上只是想用[I+1]作为你的索引来代替下一个。问题在于你的掉期 在C语言中,参数是按值传递的,因此当您进行交换时,传入的值不会受到影响,因此不会发生任何事情。您需要传入指向数字的指针(然后在其中取消引用): 然后用要交换的变量的地址调用它:
swapValues(&theArray[i], &theArray[next]);
Edit:Ha-@Zielu看到了Java,我看到了C。这两种情况下都存在相同的问题,正如@Zielu指出的,您还需要增加下一个。我相信你实际上只是想用[I+1]作为你的索引来代替下一个。我们看不到你的主索引。对不起!我要加多少主菜?我只创建一个新对象并调用bubbleSort();也可以考虑添加一个用于此语言的标记。我们可以猜,但我们为什么要猜呢?再次抱歉!我对这很陌生,没意识到。更新,谢谢!我们看不到你的主菜,对不起!我要加多少主菜?我只创建一个新对象并调用bubbleSort();也可以考虑添加一个用于此语言的标记。我们可以猜,但我们为什么要猜呢?再次抱歉!我对这很陌生,没意识到。更新,谢谢!我们看不到你的主菜,对不起!我要加多少主菜?我只创建一个新对象并调用bubbleSort();也可以考虑添加一个用于此语言的标记。我们可以猜,但我们为什么要猜呢?再次抱歉!我对这很陌生,没意识到。更新,谢谢!我们看不到你的主菜,对不起!我要加多少主菜?我只创建一个新对象并调用bubbleSort();也可以考虑添加一个用于此语言的标记。我们可以猜,但我们为什么要猜呢?再次抱歉!我对这很陌生,没意识到。更新,谢谢!对不起,我很困惑。我是否需要返回一个值来识别更改。如何交换数组的元素?通过简单的方法在循环中感谢您:int tmp=theArray[i];数组[i]=数组[next];theArray[next]=tmp,如果您想呼叫