import java.util.Scanner;
public class Bubble {
public static void main(String []args){
int n;
Scanner s=new Scanner(System.in);
n=s.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=s.nextInt();
}
int num=1;
for(int i=0;i<n;i++){
for(int j=i+1;j<n-i;j++){
if(a[i]<a[j]){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
System.out.println("第"+num+"次交换:");
for(int z=0;z<n;z++){
System.out.print(a[z]+" ");
}
System.out.println();
num++;
}
}
}
}
}
测试数据:n=5,a[5]={3,9,6,2,0}
结果:
在最坏的情况下(不考虑输出相关的操作),运行次数为((n-1)+(n-2)+(n-3)+…+1)*3=(n^2)/6+n/6。最高阶为(n^2)/6,除去常数项,时间复杂度为O(n^2)。