前言
最近面试算法岗被面试官问到:简单介绍一下快速排序的原理,当时大脑一片空白,真是耻辱啊,作为一个计算机的研究生,连这都回答不上来,所以痛定思痛,准备出一个排序算法的介绍系列,今天从最简单的冒泡排序开始说起。
原理
大家一定要彻底理解这里的“冒泡”,众所周知,在水中,水泡越往上越大,所以冒泡也就是说逐渐的将最大的“冒”出来,举例如下:[4,5,1,3,7]。
冒泡算法的过程就是第一轮:4和5比,不动;5和1比,互换;5和3比,互换;5和7比,不动。
以上第一轮就把最大值7给“冒”到了最后的位置。
然后就是重复进行这一过程,这里需要注意的一点是因为第一轮已经把最大的给冒了出来,所以第二轮只需要对次大值进行“冒泡”操作,表现在代码是就是可以减少一次对比,以此类推,后面可以相应的减少两次,三次,四次。。。
直到最小值确定,放在第一位。
程序结束。
代码
package basicDatastructure;
public class BubbleSort {
public static int [] bubble(int arr[]) {
int temp; //设置一个临时变量,为了交换位置的时候使用。
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;
}
}
int i1 = i+1;
for (int k = 0; k < arr.length; k++) {
System.out.println("第"+i1+"次的结果为:"+arr[k]);
}
}
return arr;
}
public static void main(String[] args) {
int a[] = {4,5,7,1,3};
int result[] = bubble(a);
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
}
}