在介绍冒泡算法之前,首先给大家一段代码:

public static void main(String[] args) {
int[] scores={99,78,100,80,90};
int temp;
for (int i = 0; i < scores.length-1; i++) {
for (int j = 0; j < scores.length-1-i; j++) {
if (scores[j]>scores[j+1]) {
temp=scores[j];
scores[j]=scores[j+1];
scores[j+1]=temp;
}
}
}
System.out.println("排序后:");
for (int i = 0; i < scores.length; i++) {
System.out.print(scores[i]+"\t");

}
}

最后的输出结果为:78 80 90 99 100

其基本思想是重复的进行整个数组的排序,一次比较两个元素(两两排序),如果它们顺序不符合就交换,重复这样直到数列没有再需要交换的数为止(结束条件)。

因为它就好像气泡一样,轻的气泡会往上漂浮,在不断漂浮的过程中,发生了两两交换过程,所以叫冒泡排序。

就比如: 在军训排队时,按个子高的和个子矮的的顺序进行排列,个子高的和个子矮的会进行两两进行比较。举例说明冒泡算法

就如图中所示:先从2号开始,找出个子最高的,2号先与0号比较,2号比0号矮,所以2号与0号的位置不变,再让0号与1好比,0号比1号高,所以他们的位置要进行交换(交换后0号在数组索引a[2]的位置,1号在a[1]的位置),像这样一直比较下去,直到将最高的人找到,然后再进行第二轮比较,再从0号开始依照第一轮的比较方法开始比较,再找到第二个个子高的人。但是最后一个人不需要再进行比较了,第二轮也是如此。

所以看到这里,我们就知道使用冒泡算法的时候,第一步:要定义一个数组,用来存储数据;

                                                              第二步:定义两个for循环,外层循环控制比较了多少轮,内层循环两两比较,所以外层的算法是数组的长度-1,内层的算法是数                                                                          组的长度-1-i(其中i是外层数组定义的一个变量)。                

                                                              第三部:就是将排序后的值输出

             

                 口诀:外层循环n-1

                          内层循环n-1-i(n为数组长度)

在Java中,Ayyays.sort(数组名);也是排序的方法,但它只可以排升序不可以排降序,而冒泡排序既可以排升序也可以排降序,升序用大于号(>),降序用小于号(<)。


 

posted on 2016-10-23 21:48  祈言  阅读(955)  评论(0)    收藏  举报