冒泡排序 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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章