现实生活中很多地方都用到了排序,比如全班成绩排名,在人数、次数都较少的情况下,完全可以手动排序。在上中小学时候,经常帮老师批阅试卷并进行整理,最后需要排名次登分数。为了快速完成工作,一般我是这样做的,将所有试卷分别放在几张桌子上成一览,从中找出分数最低的作为第一张,找出第二低的放其上,直到全部回收完毕。这样的速度是很快的,但是我的试卷也小,最高不超过72张。
如果按照冒泡排序的做法来做的话,就应该是这样: 一叠试卷中,从最上面开始往下翻,比较上下两张试卷,若上面的分数大于下面的,则交换两张试卷,这样第一趟下来分数最高的就能放到最下面,重复的次数是(n-1)+…+2+1次 。
上面的例子中作为人是可以通览全局的,但是计算机不行,计算机只能一步一步地解决细小的问题,好在计算机的运行速度极快。冒泡排序被称为“冒泡”的原因就是:在一趟排序下来,最大项总是会被“冒泡”到顶端。
如果按照冒泡排序的做法来做的话,就应该是这样: 一叠试卷中,从最上面开始往下翻,比较上下两张试卷,若上面的分数大于下面的,则交换两张试卷,这样第一趟下来分数最高的就能放到最下面,重复的次数是(n-1)+…+2+1次 。
上面的例子中作为人是可以通览全局的,但是计算机不行,计算机只能一步一步地解决细小的问题,好在计算机的运行速度极快。冒泡排序被称为“冒泡”的原因就是:在一趟排序下来,最大项总是会被“冒泡”到顶端。
下面是Java版的冒泡排序程序:
package cn.zhf.sort;
public class BubbleSort {
public static void main(String[] args) {
int[] a = {2,4,3,5,8,7,1};//创建并初始化一个int数组
int temp = 0;
for(int i=0;i<a.length - 1;i++){
for(int j=0;j<a.length - 1 - i;j++){
if(a[j] > a[j + 1]){
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for(int i=0;i<a.length;i++){
System.out.println(a[i]);
}
}
}