A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 微凉的暮色 中级黑马   /  2015-6-1 17:55  /  864 人查看  /  16 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 微凉的暮色 于 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);       
}
}


16 个回复

正序浏览
多谢楼主的分享精神
回复 使用道具 举报
不错,学习中
回复 使用道具 举报
冒泡排序,先排最后的,选择排序先排最前的。
回复 使用道具 举报
冒泡    曾经让人 纠结 的排序方法  必须  掌握  
回复 使用道具 举报
理解,但记不住
回复 使用道具 举报
冒泡排序还是很简单的,关键就是两个for循环语句,建议最好将元素之间的交换单独封装成一个方法,这样可以提高代码的复用性!
回复 使用道具 举报
微凉的暮色 发表于 2015-6-2 14:26
有序的需要排序么?

那只有一个数据是逆序的呢?还要循环这么多次
回复 使用道具 举报
武汉小菜鸟 发表于 2015-6-2 10:45
提一个问题,如果数据已经是有序的,你的这个循环还用执行吗?效率呢?

你可能会说几个数据差不了多少?那 ...

:o
有序的需要排序么?
回复 使用道具 举报
提一个问题,如果数据已经是有序的,你的这个循环还用执行吗?效率呢?

你可能会说几个数据差不了多少?那如果排序的数上十万百万呢?

所以可以改进一下算法
回复 使用道具 举报
排序啊,这阵子搞的头疼~冒泡是最最基本的了
回复 使用道具 举报
L番茄X 发表于 2015-6-1 21:27
楼主表示我前一天学了这个,可是现在已经不记得了.可以注释一下吗?简单易明的谢谢. ...

楼上给你说了,其实很简单,就是挨个比较,选大的放后面,一共循环 (元素个数 - 1) 次
每次 比较 (元素个数 - 循环次数)次
回复 使用道具 举报
冒泡排序就是将最小的数据或者最大的数据先排到末尾,它比较的方法是第一个和第二个比较,第二个再和第三个比较,把大的或者小的放到后面,这样比完一轮,数组中最大的数据就在数组末尾了,然后再按照刚才的方法比较,但是最后一个不参与比较
回复 使用道具 举报
不错,加油。
回复 使用道具 举报
感谢分享,何不再总结一下常见排序算法
回复 使用道具 举报
冒泡排序有点小复杂
回复 使用道具 举报
楼主表示我前一天学了这个,可是现在已经不记得了.可以注释一下吗?简单易明的谢谢.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马