真的仔细到不能再仔细了!!!!!
冒泡排序的原理
从第一个数开始,依次往后比较,如果前面的数比后面的数大就交换,否则不作处理。这就类似烧开水时,壶底的水泡往上冒的过程。
冒泡排序分从大到小和从小到大两种排序方式。它们的唯一区别就是两个数交换的条件不同,从大到小排序是前面的数比后面的小的时候交换,而从小到大排序是前面的数比后面的数大的时候交换。我这里只说 从小到大的排序方式。
冒泡排序过程
以该一维数组为例:
int[] values = {3,6,4,55,45,154,0,41,12};
第一轮冒泡
图①为第一轮"冒泡"中数据的起始顺序柱形图,只要满足条件:“前一个元素比后一个元素大,则交换位置顺序,否则不交换”。
array[0]=55 > array[1]=33,条件满足,交换元素的位置顺序,如图②所示;
array[1]=55 > array[2]=22,条件满足,交换元素的位置顺序,如图③所示;
array[2]=55 < array[3]=66,条件不满足,不交换元素的位置顺序,如图③所示;
array[3]=66 > array[4]=11,条件满足,交换元素的位置顺序,如图④所示;
第一
轮"冒泡"演示如图所示:
第二轮冒泡
图④为第二轮"冒泡"中数据的起始顺序柱形图;
array[0]33 > array[1]=22,条件满足,交换元素的位置顺序,如图⑤所示;
array[1]33 < array[2]=55,条件不满足,不交换元素的位置顺序,如图⑤所示;
array[2]55 > array[3]=11,条件满足,交换元素的位置顺序,如图⑥所示;
第二轮"冒泡"演示如图所示:
第三轮冒泡
图⑥为第三轮"冒泡"中数据的起始顺序柱形图;
array[0]=22 < array[1]=33,条件不满足,不交换元素的位置顺序,如图⑥所示;
array[1]=33 >
array[2]=11,条件满足,交换元素的位置顺序,如图⑦所示;
第三轮"冒泡"演示如图所示:
第四轮冒泡
图⑦为第四轮"冒泡"中数据的起始顺序柱形图;
array[0]=22 > array[1]=11,条件满足,交换"22"和"11"的位置顺序,如图⑧所示;
第四轮"冒泡"演示如图所示:
到这里,那么我们的冒泡排序就实现了
具体代码实现
结果显示