冒泡排序优化
时间:2011-10-24
来源:互联网
int[] a={2,6,5,7,8,9};
int size=0;
for(int i=0;i<a.length;i++){
Boolean flag=false;
for(int j=a.length-1;j>i;j--){
if(j>0&&a[j]<a[j-1]){
flag=true;
}
size++;
if(a[i]>a[j]){
a[i]=a[i]+a[j];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];
}
}
if(!flag){
break;
}
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
System.out.println(size);
int size=0;
for(int i=0;i<a.length;i++){
Boolean flag=false;
for(int j=a.length-1;j>i;j--){
if(j>0&&a[j]<a[j-1]){
flag=true;
}
size++;
if(a[i]>a[j]){
a[i]=a[i]+a[j];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];
}
}
if(!flag){
break;
}
}
for(int i=0;i<a.length;i++){
System.out.print(a[i]);
}
System.out.println(size);
作者: smallfish987 发布时间: 2011-10-24
冒泡排序,通过参数或者判断,减少循环次数。谁知道还有更优化的吗?当然,快速排序等其它算法除外
作者: smallfish987 发布时间: 2011-10-24
扫描一遍 不再次冒泡,就说明排序结束
再怎么优化,复杂度依旧是O(n^2),可以说优化无济于事
再怎么优化,复杂度依旧是O(n^2),可以说优化无济于事
作者: k3108001263 发布时间: 2011-10-24
冒泡是很经典的算法了 许多大牛已经优化完了 你学的是优化完了的了
作者: mengxiangyue 发布时间: 2011-10-24
引用 2 楼 k3108001263 的回复:
扫描一遍 不再次冒泡,就说明排序结束
再怎么优化,复杂度依旧是O(n^2),可以说优化无济于事
扫描一遍 不再次冒泡,就说明排序结束
再怎么优化,复杂度依旧是O(n^2),可以说优化无济于事
扫描一遍 不再次冒泡,并不意味着冒泡就结束了哦。
譬如2,6,5,7,3,4,第一次扫描一遍,不再冒泡,但排序并没有结束
作者: smallfish987 发布时间: 2011-10-24
引用 4 楼 smallfish987 的回复:
引用 2 楼 k3108001263 的回复:
扫描一遍 不再次冒泡,就说明排序结束
再怎么优化,复杂度依旧是O(n^2),可以说优化无济于事
扫描一遍 不再次冒泡,并不意味着冒泡就结束了哦。
譬如2,6,5,7,3,4,第一次扫描一遍,不再冒泡,但排序并没有结束
引用 2 楼 k3108001263 的回复:
扫描一遍 不再次冒泡,就说明排序结束
再怎么优化,复杂度依旧是O(n^2),可以说优化无济于事
扫描一遍 不再次冒泡,并不意味着冒泡就结束了哦。
譬如2,6,5,7,3,4,第一次扫描一遍,不再冒泡,但排序并没有结束
你误解我的意思了
我的意思是说,某一次遍历所有的未确定顺序的元素,如果它们的位置不变,那么整个排序过程就结束
当然第一次扫描未确定顺序的元素(此时是所有元素),如果不发生交换,也意味着排序结束了
如果有辛碰到这种罕见的情况,这时的时间复杂度就是O(n)了,
但是时间复杂度不依赖个别情况,而是最糟糕的情况,所以说,再怎么优化,冒泡排序的时间复杂度依旧是O(n^2)
作者: k3108001263 发布时间: 2011-10-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28