冒泡排序的原理
冒泡排序算法通过重复比较,将数组中相邻的两个数据元素进行交换。在这个过程中,不断将小的值移向一端,大的值移向另一端,从而达到排序的目的。
冒泡排序算法
核心算法:
//Bubble Sort
for(int i = 1; i < length; ++i){
for (int j = length - 1; j >= i; --j) {
if(num[j - 1] > num[j]) {
tmp = num[j - 1];
num[j - 1] = num[j];
num[j] = tmp;
flag = true;
}
}
if(!flag)
break;
}
下面是完整的Bubble程序
//Bubble.java
public class test {
public static void main(String[] args) {
int[] num = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int length = 10;
int tmp;
boolean flag = false;
System.out.print("Original array is:");
for(int i = 0; i < length; ++i)
System.out.print(num[i] + " ");
System.out.println();
//Bubble Sort
for(int i = 1; i < length; ++i){
for (int j = length - 1; j >= i; --j) {
if(num[j - 1] > num[j]) {
tmp = num[j - 1];
num[j - 1] = num[j];
num[j] = tmp;
flag = true;
}
}
if(!flag)
break;
}
System.out.print("Sorted array is:");
for(int i = 0; i < length; ++i)
System.out.print(num[i] + " ");
System.out.println();
}
}
程序输出如下图所示:
Original array is:10 9 8 7 6 5 4 3 2 1
Sorted array is:1 2 3 4 5 6 7 8 9 10
尽管冒泡排序对小型数组适用,但是在大型数组中,就显得效率低下,最好的通用排序方法是快速排序。Bubble程序的时间复杂度为O(n2)。
Java中的数组引用赋值这里有对冒泡排序使用的改进,可以参考。