算法思想:冒泡排序属于交换类排序,对n个元素的序列进行排序时,如果初始序列全部有序,则冒泡过程需要进行(n-1)次元素比较,0次元素值交换。如果初始序列完全逆序,则冒泡过程中需要进行(n(n+1)/2)次元素值比较,(n(n+1)/2)次元素的交换。
例子:举个栗子,对5,3,8,6,4这个无序序列进行冒泡排序。首先从后向前冒泡,4和6比较,把4交换到前面,序列变成5,3,8,4,6。同理4和8交换,变成5,3,4,8,6,3和4无需交换。5和3交换,变成3,5,4,8,6,3.这样一次冒泡就完了,把最小的数3排到最前面了。对剩下的序列依次冒泡就会得到一个有序序列。冒泡排序的时间复杂度为O(n^2)。
package com.haobi;
/*
* 冒泡排序
*/
public class BubbleSort {
public static void bubbleSort(int[] array) {
int i,j;
int len = array.length;
int temp;
for(i=0;i<len-1;++i) {
for(j=len-1;j>i;--j) {
if(array[j]<array[j-1]) {
temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}
}
public static void main(String[] args) {
int[] array = {38,5,19,26,49,97,1,66};
bubbleSort(array);
for(int i=0;i<array.length;i++) {
System.out.print(array[i]+" ");
}
}
}
程序输出结果如下:
1 5 19 26 38 49 66 97