/*
双端冒泡就是一趟排序同时确定一个最大元素和一个最小元素,那么
总的排序时间相比传统的冒泡排序会降低一半左右的时间,结束条件为
当下沉的下限等于上浮的上限。即没有要上浮的元素也没有要下沉的元素。此时
排序结束。
时间复杂度为O(n*n/2)向上取整数,但总体的数量级还是在O(n^2)。
*/
public class BubbleSort03
{
public static void main(String[]args){
int a[] = {12,5,43,6,2,54,8};
int i,j,k;
for(i=0;i<a.length;i++){
j = 1;
k = a.length-1;
while(j<a.length-i-1){
if(a[j]>a[j+1]){
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
j++;
}//while
while(k>i){
if(a[k]<a[k-1]){
int temp = a[k];
a[k] = a[k-1];
a[k-1] = temp;
}
k--;
}
System.out.println("第"+i+"趟排序结果:");
for(int te=0;te<a.length;te++){
System.out.print(a[te]+" ");
}
if(j == k){
break;
}
}
}//main
}
双端冒泡排序
最新推荐文章于 2018-05-08 15:03:35 发布