说起冒泡算法,很多程序员都不陌生,对于老程序员就当温故概念和代码了。新程序员可以借鉴一下。
冒泡排序基本思路:对未排序的各个元素从头到尾依此比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或者最小)的元素拍好,然后再用同样的方法把剩余元素逐个进行比较,就得到所要的顺序。
冒泡排序效率,使用大O表示法,比较和交换次数都是N的平方。
比较过程图展示:
以下是具体代码:
package datastrucates.arrays.sort;
/**
* 冒泡排序--常规
*
* @author wuxin
*
*/
public class BubbleSort {
public static void bubbleSort(int[] as) {
for (int i = 0; i < as.length; i++) { // 控制每个元素都需要和后面元素比较
for (int j = 0; j < i; j++) { // 控制的是需要比较的元素
if (as[j] > as[j + 1]) { // 进行交换
int temp = as[j];
as[j] = as[j + 1];
as[j + 1] = temp;
}
}
}
}
public static void printDatas(int[] as) {
System.out.println("++++++++++++++++++++++++++++");
for(int a :as) {
System.out.println(a);
}
}
public static void main(String[] args) {
int[] as=new int[] {1,3,6,5,8};
printDatas(as);
bubbleSort(as);
printDatas(as);
}
}
运行结果: