java冒泡法快速理解
在算法十大排序中,冒泡法是其中最为简单最易理解的一种方法,下面带大家一起看一下
冒泡法的原理:顾名思义冒泡法就是像泡泡一样的冒出来,不过这里的泡泡是你所排序的相对的较大值或者较小值,通过相邻的数值比较把较大值或者较小值冒出来。
下面一个例子简单说明:
一个数组 {3,1,9,5,7,2,8},我想对其增序排列
第一轮:
- 第一次3和1进行比较,因为3大于1所以交换顺序,数组变为:
{1,3,9,5,7,2,8} - 第二次3和9进行比较,因为3小于9符合我们的要求,所以不进行交换,数组仍然为:
{1,3,9,5,7,2,8} - 第三次9和5进行比较,因为9大于5所以交换顺序,数组变为:
{1,3,5,9,7,2,8} - 第四次9和7进行比较,因为9大于7所以交换顺序,数组变为:
{1,3,5,7,9,2,8} - 第五次9和2进行比较,因为9大于2所以交换顺序,数组变为:
{1,3,5,7,2,9,8}
第六次9和8进行比较,因为9大于8所以交换顺序,数组变为:
{1,3,5,7,2,8,9}
可以发现经过第一轮6次的排序,最大值9“冒泡”了出来,成为了数组的最后一个元素,之后进行第二轮排序,最大值9就放在最后一个位置不用动了。
第二轮:
- 第一次1和3进行比较,因为1小于3符合我们的要求,所以不进行交换,数组仍为:
{1,3,5,7,2,8,9} - 第二次3和5进行比较,因为3小于5符合我们的要求,所以不进行交换,数组仍然为:
{1,3,5,7,2,8,9} - 第三次5和7进行比较,因为5小于7符合我们的要求,所以不进行交换,数组仍然为:
{1,3,5,7,2,8,9} - 第四次7和2进行比较,因为7大于2所以交换顺序,数组变为:
{1,3,5,2,7,8,9} - 第五次7和8进行比较,因为7小于8符合我们的要求,所以不进行交换,数组仍然为:
{1,3,5,7,2,8,9} - 第六次8和9进行比较,因为8小于9符合我们的要求,所以不进行交换,数组仍然为:
{1,3,5,7,2,8,9}
可以发现经过第二轮五次的排序,次大值8“冒泡”了出来,成为了数组的倒数第二个元素,之后进行第三轮排序,最大值9和次大值8就可以放在最后一个位置不用动了
。。。。。。。。
。。。。。。。。
。。。。。。。。 此处省略后几轮的排序
。。。。。。。。
。。。。。。。。
进过六轮的排序最终可达到我们的要求,得出升序数组结果 {1,2,3,5,7,8,9}
同时我们发现,进行7个数的排序,需要进行六轮排序,而每一轮排序进行6次排序
可得出结论,若进行N个数值排序,需要进行N-1轮排序,而每一轮排序进行N-1次排序
下面附上代码供参考:
package suanfa;
public class maopao {
public static void main(String[] args) {
int i,j;
int temp = 0;
int arry[]= {9,6,7,20,8,4,60,22,15};
// 冒泡排序
for(i=0;i<arry.length-1;i++)
{
for(j=0;j<arry.length-1;j++)
{
if(arry[j]>arry[j+1])
{
//交换元素
temp=arry[j];
arry[j]=arry[j+1];
arry[j+1]=temp;
}
}
}
// 输出数组
System.out.print("排序结果为");
for(i=0;i<arry.length;i++)
{
System.out.print(" "+arry[i]);
}
}
}
2531

被折叠的 条评论
为什么被折叠?



