冒泡排序原理
将要排序的一组数字进行遍历。
第一次遍历,将相邻的两个数字进行比较,直到这组数字全部比较完成,如果前面比后面的数字大,则进行交换位置,此时可以将最大的数字筛选出来,放到最后的位置上。
第二次遍历,将相邻的两个数字进行比较,直到这组数字全部比较完成,如果前面比后面的数字大,则进行交换位置,将这组数字里面第二大的数字筛选出来,放到倒数第二的位置上。
依次进行遍历,交换位置,直到排序完成。
比如要排序的数字是4,2,7,3,6
第一次遍历:4,2,7,3,6
第一个位置上的数字和第二个位置上的数字进行比较,4大于2,交换位置:
2,4,7,3,6
第二个位置上的数字和第三个位置上的数字进行比较,4小于7,不用交换:
2,4,7,3,6
第三个位置上的数字和第四个位置上的数字进行比较,7大于3,交换位置:
2,4,3,7,6
第四个位置上的数字和第五个位置上的数字进行比较,7大于6,交换位置:
2,4,3,6,7
第二次遍历:2,4,3,6
第一个位置上的数字和第二个位置上的数字进行比较,2小于4,不用交换:
2,4,3,6
第二个位置上的数字和第三个位置上的数字进行比较,4大于3,交换位置:
2,3,4,6
第三个位置上的数字和第四个位置上的数字进行比较,4小于6,不用交换:
2,3,4,6
第三次遍历:2,3,4
第一个位置上的数字和第二个位置上的数字进行比较,2小于3,不用交换
2,3,4
第二个位置上的数字和第三个位置上的数字进行比较,3小于4,不用交换
2,3,4
第四次遍历:2,3
第一个位置上的数字和第二个位置上的数字进行比较,2小于3,不用交换
2,3
排序完成
假设要遍历数字的个数是n,则需要遍历的次数是n-1
代码实现
/*
冒泡排序算法:
*/
public class BubbleSort{
public static void main(String[] args){
int[] a = {4,2,7,3,6};
//开始排序
for(int i=a.length-1;i>0;i--){
for(int j=0;j<i;j++){
if(a[j]>a[j+1]){
//交换位置
int temp;
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]);
}
}
}