Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
bubbleSort和swap方法不起作用[Java]_Java_Methods_Swap_Bubble Sort - Fatal编程技术网

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,那么

  • 下一个索引从未更新,因此始终保持为1
  • swap方法没有副作用,您希望交换数组中的元素,但在java方法中,参数作为值传递,因此next和
    i
    变量仅在swap方法内更改值,它们与数组的单元格无关 如果是java,那么

  • 下一个索引从未更新,因此始终保持为1
  • swap方法没有副作用,您希望交换数组中的元素,但在java方法中,参数作为值传递,因此next和
    i
    变量仅在swap方法内更改值,它们与数组的单元格无关 如果是java,那么

  • 下一个索引从未更新,因此始终保持为1
  • swap方法没有副作用,您希望交换数组中的元素,但在java方法中,参数作为值传递,因此next和
    i
    变量仅在swap方法内更改值,它们与数组的单元格无关 如果是java,那么

  • 下一个索引从未更新,因此始终保持为1
  • swap方法没有副作用,您希望交换数组中的元素,但在java方法中,参数作为值传递,因此next和
    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,如果您想呼叫