Java 带有while语句的场景
好的,我正在努力理解冒泡排序算法,这段代码可以工作,但我不理解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;
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
^^