冒泡排序

public class BubbleSort {

	/**
	 * @param args
	 */
	public  static void bubbleSort(int[] a){
		//第一点:最多n-1次交换
		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 tmp=a[j];
					a[j]=a[j+1];
					a[j+1]=tmp;
				}
			}
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		int[] a = { 6, 5, 4, 3, 2, 1};
		System.out.println("排序之前:");
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + ",");
		}
		bubbleSort(a);
		System.out.println();
		System.out.println("排序之后:");
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + ",");
		}
		
	}

}

综上,因此冒泡排序总的平均时间复杂度为

 冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。


你可能感兴趣的:(冒泡排序)