冒泡排序

算法思想

     對要排序的數據,從上到下一次比較相鄰的書並加以調整,將最大的數向下移動,較小的數向上冒起。即:每一趟一次比較相鄰的兩個元素,將較小的數放在左邊,循環進行一樣的操做,直到所有帶排序的數據元素排完。 java

示例分析示意

    

代碼實現

package test.algorithm.FastSlowPointer;

public class BubbleSort {
	
	/**
	 * 冒泡排序
	 * @param list
	 */
	public static void bubbleSort(int[] list){
		
		int temp = 0, count1=0, count2=0 ;
		
		//子序列是否無序(優化冒泡排序)
		boolean flag =true;
		
		//每一輪經過兩兩比較並判斷是否移動,
		//一輪比較下來,便可得到最小元素
		for(int i=0;i<list.length && flag;i++){
			
			for(int j=list.length-1;j>i;j--){
				count1++;
				
				if(list[j-1]>list[j]){
					//移動元素即i以後子序列無序
					count2++;
					temp = list[j-1];
					list[j-1] = list[j];
					list[j] = temp;
					flag = true;
				}else{
					//不用移動元素即i以後子序列有序
					//i以後的元素不用比較
					flag = false;
				}
			}
		}
		System.out.println("比較"+count1+"次,移動"+count2+"次");
	}

	public static void main(String[] args) {
		int[] list = {5,2,6,0,3,9,1,7,4,8};
		bubbleSort(list);
		
		System.out.print("打印數組:");
		for(int i :list){
			System.out.print(i+" ");
		}
	}

}
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息