首页 > 编程知识 正文

用java实现冒泡算法,冒泡法10个整数从小到大排序

时间:2023-05-05 23:02:33 阅读:168628 作者:3368

冒泡算法的核心思想是:

每11个循环,一个数下沉到底; 从要比较的数中减去1

2比较相邻的两个要素,重复后方比较

复杂性:

如果数组是自然有序的,则为o(n )

出现自然逆序时,最坏的情况是o(n2 )。

实现:

# include iostream # includealgorithmusingnamespacestd; voidbulldingsort(int*a,int length ) { int nCount=0; if(a!=空长度0 (boolbchanged=false; int i=0; for(I=0; i length - 1; I ) for(intj=0; j length - i - 1; j () if ) a[j1]a[j] ) {int nTemp=a[j]; a[j]=a[j 1]; a[j 1]=nTemp; bChanged=true; }nCount; (if (! bchanged({break; } STD :3360 cout ' loop count:' ncount STD 33603360 endl; }}int main () inta ) )={ 0,1,2,65,54,20,30,40,20 }; intb [ ]={ 0,1,2,3,4,5,6,7,8 }; intc [ ]={ 8,7,6,5,4,3,2,1,0 }; intlengtha=sizeof(a )/sizeof ) a[0]; intlengthb=sizeof(b )/sizeof ) b[0]; intlengthc=sizeof(c )/sizeof ) c[0]; bulldingsort(a,lengthA; bulldingsort(b,lengthB; bulldingsort(c,lengthC; STD:3360for_each(a,a lengthA,[ ] ) { STD :3360 coutis TD 33603360 endl; ); STD : cout ' b : ' STD :3360 endl; STD:3360for_each(b,b lengthB,[](intI ) { STD :3360 coutis TD 33603360 endl; ); STD : cout ' c : ' STD :3360 endl; STD:3360for_each(c,c lengthC,[](intI ) { STD :3360 coutis TD 33603360 endl; ); 返回0; (注)控制外层下沉到底的次数。 例如,如果有n个,n-1个数应该会下沉到底部。 剩下的一个数是自然有序的。

内层控制比较次数。 比较n个相邻2个元素,进行n-1次的相邻2个个数的比较。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。