冒泡排序
冒泡排序(Bubble Sort)是最简单和最通用的排序方法,其基本思想是:在待排序的一组数中,将相邻的两个数进行比较,若前面的数比后面的数大就交换两数,否则不交换;如此下去,直至最终完成排序 。由此可得,在排序过程中,大的数据往下沉,小的数据往上浮,就像气泡一样,于是将这种排序算法形象地称为冒泡排序 。
算法原理
假定序列中有n个数,要进行从小到大的排序。若参与排序的数组元素共有n个,则需要n-1轮排序。在第í轮排序中,从左端开始,相邻两数比较大小,若反序则将两者交换位置,直到比较第n+1-i个数为止。第1个数与第2个数比较,第2个数和第3个数比较,一直到第n-i个数与第n+1-i个数比较,一共处理 n-i次。此时,第n+1-i个位置上的数已经有序,后续就不需要参加以后的排序。
(1)第1轮冒泡排序先从第1个数和第2个数开始比较,若第1个数大于第2个数,则需要交换两者的位置;否则保持不变。重复这一过程,直到处理完本轮数列中最后两个数。
(2)第2轮冒泡排序与第1轮冒泡排序进行相同的排序,使大的数交换到n-2的位置上。
(3)重复以上过程,共需经过n-1轮冒泡排序后,数据实现升序排序。
算法示例
(1) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
(2) 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
(3) 针对所有的元素重复以上的步骤,除了最后一个。
(4) 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
完整代码
//冒泡排序
public class BubbleSort01 {
//编写一个main方法
public static void main (String[] args){
int arr[] = {66,69,0,24,12};
int temp = 0; //用于辅助交换的变量
for (int i = 0;i < arr.length-1 ;i++ ) { //比较
for (int j = 0;j < arr.length-1 - i;j++ ) { //比较
//如果前面的数 > 后面的数 就交换
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]=temp;
}
}
System.out.println("\n==第" + (i+1)+"轮==");
for(int j = 0; j < arr.length; j++){
System.out.print(arr[j]+"\t");
}
}
}
}
运行结果如下
以上代码是我使用Sublime Text3编写,也推荐给初学者,前期学习尽量手写代码,IDEA太过智能,快捷键和提示太多,初学可以使用Sublime辅助学习,掌握基础熟悉代码再换成IDEA
最后,平台很好,一定要借助各种资源学习,再展示自己,这是我第一次尝试发帖,将以前学习笔记(曾经敲的冒泡排序代码)分享出来,希望看完的同学,要尝试去理解,代码不难主要是思路要牢记,Java很卷,但要么出局,要么出众,一定要努力了过后,才不会留遗憾