Java 带有while语句的场景

Java 带有while语句的场景,java,while-loop,Java,While Loop,好的,我正在努力理解冒泡排序算法,这段代码可以工作,但我不理解while语句?括号里没有条件,我不知道它为什么继续运行,为什么停止 public class BubbleSort { int temp; boolean flag; int[] bubbleSort(int[] bs) { flag=true;//What? while(flag)//Whats happening here? Whats the condition { flag=false;

好的,我正在努力理解冒泡排序算法,这段代码可以工作,但我不理解while语句?括号里没有条件,我不知道它为什么继续运行,为什么停止

public class BubbleSort {
int temp;
boolean flag;
int[] bubbleSort(int[] bs)
{  
    flag=true;//What? 
    while(flag)//Whats happening here? Whats the condition
    {
    flag=false;//Wouldnt that quit the while loop?
    for(int i=0;i<bs.length-1;i++)
    {   
        if(bs[i]>bs[(i+1)])
        {
            temp=bs[i];
            bs[i]=bs[i+1];
            bs[i+1]=temp;
            flag=true;//What does this signify?
        }

    }
}
    return bs;
}

public static void main(String[] args)
{
    BubbleSort thisone = new BubbleSort();
    int[] bacon = {1,0,3,2,4,5};
    int[] potato = thisone.bubbleSort(bacon);
    for(int i=0;i<potato.length;i++)
    {
        System.out.println(potato[i]);
    }

}

}
公共类BubbleSort{
内部温度;
布尔标志;
int[]bubbleSort(int[]bs)
{  
flag=true;//什么?
while(flag)//这里发生了什么?情况如何
{

flag=false;//是否退出while循环? 对于(int i=0;ibs[(i+1)]) { 温度=bs[i]; bs[i]=bs[i+1]; bs[i+1]=温度; flag=true;//这意味着什么? } } } 返回bs; } 公共静态void main(字符串[]args) { BubbleSort thisone=新的BubbleSort(); int[]培根={1,0,3,2,4,5}; int[]土豆=thisone.bubbleSort(培根);
对于(int i=0;i而言,
标志是一种典型的冒泡排序优化。如果您遍历整个数组并且没有进行任何更改,那么数组将被排序,您可以停止。
而(标志)
表示“只要数组仍需要排序”


换句话说,该标志会使排序短路。如果可能的话,它可以让您提前停止。

该标志是一种典型的冒泡排序优化。
是一种典型的冒泡排序优化。如果您遍历整个数组并且不做任何更改,那么该数组将被排序,并且您可以停止。
while(标志)
表示“只要该数组仍然需要排序”


换句话说,该标志会使排序短路。如果可能的话,它可以让您提前停止。

该标志是一种典型的冒泡排序优化。
是一种典型的冒泡排序优化。如果您遍历整个数组并且不做任何更改,那么该数组将被排序,并且您可以停止。
while(标志)
表示“只要该数组仍然需要排序”


换句话说,该标志会使排序短路。如果可能的话,它可以让您提前停止。

该标志是一种典型的冒泡排序优化。
是一种典型的冒泡排序优化。如果您遍历整个数组并且不做任何更改,那么该数组将被排序,并且您可以停止。
while(标志)
表示“只要该数组仍然需要排序”

换句话说,该标志会使排序短路。如果可能,它会让您提前停止

  • 在进入循环之前,
    标志
    设置为
    (否则将无法进入)
  • 一旦输入,它就会将
    标志设置为false
  • 如果满足条件,
    标志
    设置为
    true
  • 返回循环的顶部-是否设置了
    标志
    如果为false,它将中断,否则返回步骤2
  • 在进入循环之前,
    标志
    设置为
    (否则将无法进入)
  • 一旦输入,它就会将
    标志设置为false
  • 如果满足条件,
    标志
    设置为
    true
  • 返回循环的顶部-是否设置了
    标志
    如果为false,它将中断,否则返回步骤2
  • 在进入循环之前,
    标志
    设置为
    (否则将无法进入)
  • 一旦输入,它就会将
    标志设置为false
  • 如果满足条件,
    标志
    设置为
    true
  • 返回循环的顶部-是否设置了
    标志
    如果为false,它将中断,否则返回步骤2
  • 在进入循环之前,
    标志
    设置为
    (否则将无法进入)
  • 一旦输入,它就会将
    标志设置为false
  • 如果满足条件,
    标志
    设置为
    true
  • 返回循环的顶部-是否设置了
    标志
    如果为false,它将中断,否则返回步骤2

  • flag=true;//什么?

    标志在前面被声明为布尔值,现在它被初始化为true(这样循环将至少执行一次)

    while(flag)//这里发生了什么?条件是什么

    条件只是计算为布尔值的东西,在本例中,布尔变量
    flag
    就是条件


    flag=false;//是否退出while循环?

    它不会跳出循环,这需要
    中断
    返回
    ,因此执行将继续进入for循环

    flag=true;//这意味着什么?


    当(
    if(bs[i]>bs[(i+1)])
    的计算结果为true时,设置该值,表示数组尚未排序。

    标志=true;//什么?

    标志在前面被声明为布尔值,现在它被初始化为true(这样循环将至少执行一次)

    while(flag)//这里发生了什么?条件是什么

    条件只是计算为布尔值的东西,在本例中,布尔变量
    flag
    就是条件


    flag=false;//是否退出while循环?

    它不会跳出循环,这需要
    中断
    返回
    ,因此执行将继续进入for循环

    flag=true;//这意味着什么?


    当(
    if(bs[i]>bs[(i+1)])
    的计算结果为true时,设置该值,表示数组尚未排序。

    标志=true;//什么?

    标志在前面被声明为布尔值,现在它被初始化为true(这样循环将至少执行一次)

    while(flag)//这里发生了什么?条件是什么

    条件只是计算为布尔值的东西,在本例中,布尔变量
    flag
    就是条件


    flag=false;//是否退出while循环?

    它不会跳出循环,这需要
    中断
    返回
    ,因此执行将继续进入for循环

    flag=true;//这意味着什么?

    这是在<代码时设置的
    didSwap = true                          # force loop entry
    while didSwap:                          # keep going until sorted
        didSwap = false                     # mark sorted
        for each element except last:
            if element > next element:
                swap element, next element
                didSwap = true              # swapped, mark possibly unsorted
    
    5 10 15 7 20
         ^^
    
    5 10 7 15 20
           ^^