冒泡排序算法是java面试中最常考的考点之一,我们应当熟记于心,理解冒泡排序的思想,那么对于初学者来说,是必要的。本人也是刚工作不到一年,本着学习的态度,将自己的见解与想法表达出来,如果有存在错误的地方,还请指正出来,不胜感激。
我们先看实现代码。
public class MaoPaoSort {
public static void main(String[] args) {
int arr[] = {-21,15,4,0,36,212,451,-66,8,45748};
int temp;
for(int i=0;i<arr.length-1;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println("排序结果如下:");
for(int i=0;i<arr.length;i++){
System.out.print(arr[i]+" ");
}
}
}
思想:冒泡排序的思想是在于比较相邻两个数字的大小,我们以升序排序为例。
本例中实现对十个数字进行升序排序。
- 首先,第一个for循环的次数为arr.length-1,表示的是排序的轮数,我们试想2个数字只需要比较一轮,3个数字需要比较2轮…n个数字需要比较n-1轮,所以外层for循环表示的是一共需要进行多少轮比较。
- 其次,第二个for循环指的是,每一轮需要比较的次数,10个数字,从第一轮开始的话,那么对于相邻数字比较,需要9次,第二轮需要8次,这样推算第n轮需要arr.length-n-1次,每次比较,如果此数字比后面的大,那么进行交换,在这种情况下,每经过一轮的比较,就会将10个数字中的最大者放在后面,正如小金鱼吐泡泡一样,最大的数字在一轮的比较中浮现出来。
- 这样的话,最终的结果就是排好序的了。