冒泡排序 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; 根據算法本身,通過計算迭代次數,或建立遞推方程求解