冒泡排序 Java

冒泡排序 Java

 

 

 

寫法1:

 

package cn.com.cloud.sea.test;
public class SortCloud {
	public static void main(String[] args) {
		int [] arr = new int[]{5,3,6,2,1};
		int maxNum = 0;//最多比較次數
		int num = 0;//實際比較次數
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length-1-i; j++) {
//				int temp = arr[j];
				System.out.println(SortCloud.class+"最大比較:"+(++maxNum)+"次");
				if (arr[j]>arr[j+1]) {
					System.out.println(SortCloud.class+"實際比較次數:"+(++num)+"次");
//					temp = arr[j];
//					arr[j]=arr[j+1];
//					arr[j+1]=temp;
					
					arr[j] = arr[j]+arr[j+1];
					arr[j+1] = arr[j]-arr[j+1];
					arr[j] = arr[j]-arr[j+1];
				}
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}


 

 

 

 

 

寫法2: 

package cn.com.cloud.sea.test;
public class SortCloud {
	public static void main(String[] args) {
		int [] arr = new int[]{5,3,6,2,1};
		int maxNum = 0;//最多比較次數
		int num = 0;//實際比較次數
		for (int i = 0; i < arr.length; i++) {
			for (int j = 0; j < arr.length-1-i; j++) {
				int temp = arr[j];
				System.out.println(SortCloud.class+"最大比較:"+(++maxNum)+"次");
				if (arr[j]>arr[j+1]) {
					System.out.println(SortCloud.class+"實際比較次數:"+(++num)+"次");
					temp = arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
				}
			}
		}
		for (int i = 0; i < arr.length; i++) {
			System.out.println(arr[i]);
		}
	}
}


 

 

 

 

 

 

冒泡排序:最好情況需比較n-1次,最壞情況需比較n(n-1)/2;
選擇排序:最好情況需比較n(n-1)/2,最壞情況需比較n(n-1)/2;
對分排序:最好情況需比較n/2logn,最壞情況需比較近似nlogn;

根據算法本身,通過計算迭代次數,或建立遞推方程求解
 
 
 
 
 
 
 
 

 

發佈了84 篇原創文章 · 獲贊 9 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章