java冒泡法的思路

来源:百度知道 编辑:UC知道 时间:2024/06/27 07:49:18
class arraytxt{
public static void main(String[] args){

int[] arraytest={-1,90,0,33,25,9,50,22,1,25,2};
int k=arraytest.length;
for(int i=0; i<k-1; i++)
for(int j=i+1; j<k; j++)
if(arraytest[i]<arraytest[j]){
int o=arraytest[i];
arraytest[i]=arraytest[j];
arraytest[j]=o;
}
for(int i=0; i<k; i++){
System.out.println(arraytest[i]+ "");
}
}
}
1.这是一个书上的很基础的例子,但我就是不理解它的思路和工作原理,
先解释下冒泡法的思路和工作原理?
2.大家给我解释一下前面两个循环和一个if()的思路和工作原理,
3.还有在最后一个打印输出的循环怎么理解?
2.大家给我解释一下前面两个循环和一个if()的思路和工作原理,
3.还有在最后一个打印输出的循环怎么理解?

1 如果我比你大,那么我们2个交换
2 如果我比你身后的还大,那么我继续交换
3 最终,我最大,我来到了最大的一端
4 最小的那面继续我的步骤,每次把剩余最大的移动到一段

形象点,就是每次都把最大的泡泡挪到最上面

举个形象的例子:
你们村的人每人都有一个球 球的质量有大有小

现在让你们村的人从西往东站一排(假设你在最西边)
现在你拿着球沿着队伍往东走,遇到谁手上的球比你的重就和他交换,走到队尾之后就回到你开始的位置。
然后让从西往东数第二个再沿着队伍往东走 干和你一样的事情
...

你猜猜最后是啥结果
=================
补充
第一个循环 相当于 例子中的 你第一个先往东走 然后第二个人往东走 然后第三个人往东走....最后一个人就不用往东走了 他后面没人了
第二个循环 相当于 你走到了你后面的第一个人面前 你走到了你后面的第二个人面前 你走到了你后面的第三个人面前...你走到最后一个人面前

if是比较大小 原理吗虚拟机就是这样设置的 没必要深究

打印那个循环就是
例子中的 从西往东打印 一个一个来

把数组从第一个数值开始进行排序,比如i=0的时候,j=1,
经过if语句,-1<90,就交换位置,90成为第一个数值,
j=2的时候,再经过if语句,不过那时候就已经不成立了~~
.....
i=1
.....
精华就是第i次循环找到数组中第i个大的
一直循环完~

起泡法是从一端开始比较的,第一次循环就是把最小数上升到第一位置,第二次循环就是把第二最小数上升到第二位置。如此循环实现数据的排序。