举个栗子:将5,1,9,10,20,55,0,66进行小大排序
用一个数组存储这些数据,两个for循环进行比较
1.
第一趟:5和66比较,66大放位置不变
第二趟:5和0比较,5大交换位置变成了0,1,9,10,20,55,5,66
第三趟:0和55比较,位置不变
……
变成0,1,9,10,20,55,5,66
2…
第一趟:1和66比较,位置不变
……
很简单看下面的代码一目了然
package com.moshang;
public class Bumble {
int a[];
public Bumble(int a[]){
this.a=a;
int temp;
for(int i=a.length-1;i>0;i--){
@SuppressWarnings("unused")
boolean flag=false;
for(int j=1;j<=i;j++){
if(a[j-1]>a[j]){
temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
flag=true;
}
if(flag=false){return;}
}
}
}
void show(){
for(int k=0;k<a.length;k++){
System.out.print(a[k]+" ");
}
}
public static void main(String[] args) {
int a[]={5,1,9,10,20,55,0,66};
Bumble b=new Bumble(a);
b.show();
}
}
定义一个flag用来优化算法,如果是1,2,3,4,5,6的有序只需要O(1)的时间复杂度能排列出来,效率高
ok我们来运行一下,没问题!