黑马程序员技术交流社区
标题: 小知识(冒泡排序) [打印本页]
作者: 微凉的暮色 时间: 2015-6-1 17:55
标题: 小知识(冒泡排序)
本帖最后由 微凉的暮色 于 2015-6-1 23:10 编辑
冒泡排序
(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。
(2)代码实现
public class bubbleSort {
public bubbleSort(){
int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};
int temp=0;
for(int i=0;i<a.length-1;i++){
for(int j=0;j<a.length-1-i;j++){
// 取 角标位 j 的数 跟j +1 相比较,大值 放 j+1 位,每循环一次 确定 倒数 i 的 最大值
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int i=0;i<a.length;i++)
System.out.println(a);
}
}
作者: L番茄X 时间: 2015-6-1 21:27
楼主表示我前一天学了这个,可是现在已经不记得了.可以注释一下吗?简单易明的谢谢.
作者: 小峰Raul 时间: 2015-6-1 21:42
冒泡排序有点小复杂
作者: ZYZQ 时间: 2015-6-1 21:56
感谢分享,何不再总结一下常见排序算法
作者: 城北一直晴。 时间: 2015-6-1 22:18
不错,加油。
作者: l598790586 时间: 2015-6-1 22:29
冒泡排序就是将最小的数据或者最大的数据先排到末尾,它比较的方法是第一个和第二个比较,第二个再和第三个比较,把大的或者小的放到后面,这样比完一轮,数组中最大的数据就在数组末尾了,然后再按照刚才的方法比较,但是最后一个不参与比较
作者: 微凉的暮色 时间: 2015-6-1 23:13
楼上给你说了,其实很简单,就是挨个比较,选大的放后面,一共循环 (元素个数 - 1) 次
每次 比较 (元素个数 - 循环次数)次
作者: 半世心修 时间: 2015-6-2 06:52
排序啊,这阵子搞的头疼~冒泡是最最基本的了
作者: 武汉小菜鸟 时间: 2015-6-2 10:45
提一个问题,如果数据已经是有序的,你的这个循环还用执行吗?效率呢?
你可能会说几个数据差不了多少?那如果排序的数上十万百万呢?
所以可以改进一下算法
作者: 微凉的暮色 时间: 2015-6-2 14:26
:o
有序的需要排序么?
作者: 武汉小菜鸟 时间: 2015-6-2 16:49
那只有一个数据是逆序的呢?还要循环这么多次
作者: qian0217wei 时间: 2015-6-2 17:34
冒泡排序还是很简单的,关键就是两个for循环语句,建议最好将元素之间的交换单独封装成一个方法,这样可以提高代码的复用性!
作者: 灵界 时间: 2015-6-2 21:12
理解,但记不住
作者: 飘过的云 时间: 2015-6-2 21:25
冒泡 曾经让人 纠结 的排序方法 必须 掌握
作者: 海角秋风 时间: 2015-6-2 21:29
冒泡排序,先排最后的,选择排序先排最前的。
作者: 银哥 时间: 2015-6-3 22:29
不错,学习中
作者: d18819042875 时间: 2015-6-3 22:33
多谢楼主的分享精神
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |