这是我在学校进行数组练习的Java代码
我想知道为什么当我尝试使用ImprovisedBubbleSort方法时这里的所有内容都能正常工作时,我的程序停止运行

 public static void ImprovedBubbleSort(int [] array){
    boolean swap;
    int temp;
    int max;
    do {
      swap=false;
      max=1;
      for (int i=0;i<array.length-max;i++){
        if (array[i]>array[i+1]){
          temp=array[i];
          array[i]=array[i+1];
          array[i+1]=temp;
          swap=true;
        }
        max++;
      }
    }while (swap=true);
    System.out.println("The numbers you entered in order are: ");
    for (int j=0;j<10;j++){
      System.out.println(array[j]);
    }
  }
}

最佳答案

重要的是要意识到,如果您在示例中使用带if语句的单循环,则可以找到位置0和1的实例,在该实例中对其进行了排序,但数组的其余部分可能没有排序。这将导致if语句无法激活。

您可以通过执行以下操作来缓解此问题:

import java.util.Arrays;
public class MyClass {
    public static void main(String args[]) {


    int test[] = {7,1,9,1,5,6};
    bubbleSort(test);
    System.out.println(Arrays.toString(test));
    }

    static void bubbleSort(int[] arr) {
        int n = arr.length;
        int temp = 0;
        for(int i=0; i < n; i++){
            for(int j=1; j < (n-i); j++){
                if(arr[j-1] > arr[j]){
                    //swap elements
                    temp = arr[j-1];
                    arr[j-1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
    }
}


请参见this示例。

关于java - 为什么我的EnhancedBubbleSort方法不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48758101/

10-10 02:37