- 基本思想(假设有小到大排序)
对于给定的n个记录,从第一个记录开始一次对相邻的两个记录进行比较,当前面的记录大于后面的记录时,交换位置,进行一轮比较和换位后,n个记录中最大的将位于第n位;然后对前(n-1)个记录进行第二轮比较;重复该过程直到进行比较的记录只剩下一个为止。
- 程序如下
public class Test{ public static void bubbleSort(int[] a){ for(int i=0;i<a.length-1;i++){ for(int j=0;j<a.length-i-1;j++){ if(a[j]>a[j+1]){ int temp = a[j]; a[j] = a[j+1]; a[j+1] =temp; } } } } public static void main(String[] args){ int[] a = {7,6,4,8,9,3,2}; bubbleSort(a); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } }
程序结果
- 算法分析
- 最好时间:O(n)
- 平均时间:O(n2)
- 最坏时间:O(n2)
- 辅助存储:O(1)
- 稳定性:稳定性