冒泡排序

《Java数据结构与算法》中提到,排序是计算机科学中广泛研究的课题

引用书中的例子:

一列棒球运动员从低到高的身高进行站队

  • 在现实生活中,人可以看到所有运动员的情况,最高的那个可以瞬间找出,而且毫不费力的测量和比较每个人的身高,可以不拘泥于空间,并在推推搡搡中前后让位地排好队列
  • 计算机程序却不能向人一样总览所有信息,程序只能在不断的比较和交换、复制中去遵循简单的规则,直到所有数据有序为止

冒泡排序

冒泡排序是对上述程序规则较好的体现

  1. 比较两人身高
  2. 如果左边身高,高于右边则两人交换位置,否则保持不变
  3. 指针向右移动,继续拿下一个人进行比较

第一轮比较后就可以找出最高的那人并且让他站在队伍的最右边
这也形象的解释了为何此算法被称为冒泡排序的原因:
最大的数据总是被“冒泡”到数组的顶端
在这里插入图片描述
在这里插入图片描述
将上述操作比作内循环比较
那从左到右一趟可以比作一次外循环
当多次外循环操作时就可以达到将身高从矮到高排序,中间只需要注意将已排序的比较操作剔除就可以实现冒泡排序

代码实现

/**
 * @author: DonHear
 * @since: 2021-01-29 10:56
 * @Description:
 * @version: 1.0.0
 */
public class BubbleSor {
   
    private long[] a;
    //指针(索引)体现数组a中实际元素个数
    private int nElems;
    //构造函数:当对象初始化后,指针(索引)也随之初始化
    public BubbleSor(int max){
   
        a = new long[max];
        nElems = 0;
    }

    /**
     * 进行冒泡排序排序
     *
     * 注:这个冒泡方法是我根据书中理解一步步调试,从内循环向外写,将自己的理解体现出来
     *     和书中给出的有所不同
     *     书中的在执行上优于我写的
     */
    public void sor(){
   
        //空闲指引,用于元素交换时临时寄存
        long c ;
        //作为内循环次数指针,减少不必要的循环消耗(默认1是因为N-1次冒泡公式)
        int k = 1;
        //外循环(i=1是因为最后一次没必要执行,已经是最小的)
        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值