这一章节非常重要,这是在公司入职中的一道笔试题。

不过这一章东西也少,基本没有课件,全是代码,我就用家常话说了,若有词或句的错误,还请海涵。

首先,告诉大家冒泡的作用:

冒泡,就是将一串不规则数字按从小到大重新输出,这就是冒泡的作用。

我先带大家理一下冒泡的程序思路:

很简单,现在我出一串不规则数字

不规则数字:8,4,3,4,-2,7,-7,0,6,9,5,5,-1

下标值:0,1,2,3,4,5,6,7,8,9,10,11,12

大家看到的在这一串不规则数字中有负数也有0及正数

那么他首先是会从下标为0,也就是第一个开始拿8与第二个相比,准确来说是执行一遍后,也就是与所有的数相比较一遍后得出结果

那么,第一遍的结果为

-7,4,3,4,-2,7,8,0,6,9,5,-5,1

然后是拿4与第三个相比较,那么第二次的结果为

-7,-5,3,4,-2,7,8,0,6,9,5,4,1

...........

总之运行到最后就是

-7,-5,-2,0,1,3,4,4,5,6,7,8,9

那么知道了他的思路那么就了解一下他们的代码

int [] array = {4,-8,1,6,7,9,5,3,2};

//第一轮排序第一位和其他位进行比较,循环i从1开始
for(int i = 1; i <array.length; i ++){
    if(array [0]> array [i]){
        //交换位置
        int temp = array [0];
        array [0] = array [i];
        array [i] = temp;
    }
}

//第二轮排序第二位和其他位进行比较,循环i从2开始
for(int i = 2; i <array.length; i ++){
    if(array [1]> array [i]){
        int temp = array [1];
        array [1] = array [i];
        array [i] = temp;
    }
}

//第三轮循环第三位和其他位进行比较i从3开始
for(int i = 3; i <array.length; i ++){
    if(array [2]> array [i]){
        int temp = array [2];
        array [2] = array [i];
        array [i] = temp;
    }
}

//输出
System.out.println(数组名[0]);

System.out.println(数组名[1]);

System.out.println(数组名[2]);

//.....等等等等

 

这种写法是比较麻烦的写法因为这样大家可以想象如果碰见了上百的数字,怎么办?写一百遍?不实际,而且会造成代码的冗余,那么就有了一种简便的写法

理解起来也非常简单

就是将原来的循环体外面包一个更大的循环体

设下标为J,设更大的循环体,将序号改为J + 1,这样实现单个循环体无限循环

for(int j = 0; j <array.length; j ++){//这个就是那个更大的循环体
    for(int i = j + 1; i <array.length; i ++){//为什么是j + 1?因为数组的数组号永远比下标大1,所以是j + 1
        if(array [j]> array [i]){//这里的j也是原来的第几次数字所替换的
            int temp = array [j];
            array [j] = array [i];
            array [i] = temp;
        }
    }
}

//这里再说一下

int temp = array [j];
array [j] = array [i];
array [i] = temp;

这个代码的意思

很简单,就是转换赋值的意思

首先我们来说一下为什么会出现int temp

int temp就像是一个空的容器,

或者这样说,我们有两个瓶子,一个有油,一个是醋,怎么把油倒到醋瓶里,让两者液体交换

那么就需要第三个空瓶子,也就是int temp

拿上面的例子来说就是将数组[j]的值赋予int temp

这样的数组[j]的容器是空的,

我们再将array [i]的东西赋值给array [j] 

这样我们就得到了array [i]的空容器

最后我们将刚刚的int temp的数值再赋予给array [i]

这样就实现了两者的交换,

怎么样?是不是很简单?

欢迎大家指出我的错误,我必将虚心接受,并改正。

也欢迎大家分享自己的心得与经验。