举个栗子:将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我们来运行一下,没问题!