冒泡排序 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; 根据算法本身,通过计算迭代次数,或建立递推方程求解