冒泡:n次遍历,每次两两比较,大的后移。
<span style="font-size:14px;">public class Test {
public static void main(String[] args) {
int[] a = {9,1,8,2,7};
int n = a.length;
int temp;
for(int i=0;i<n;i++){
for(int j=0;j<n-i-1;j++){ // n-i-1是核心
if(a[j] > a[j+1]){ // 两两比较,大的后移。
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for(int k=0;k<n;k++){
System.out.print(a[k] + " ");
}
}
}</span>
总结
平均速度最快的排序算法是:快排
快排在正序或逆序时,每次划分只得到比上一次划分少一个元素的子序列。用递归树画出来,是一棵斜树,此时需要n-1次递归,时间复杂度为O(n^2)。
堆是完全二叉树,深度一定是log(n)+1,故最好和最坏时间复杂度均为O(n*log(n))。