冒泡排序实现及优化

冒泡排序:

相邻元素比较,符合条件交换位置,每轮比较会得到一个最大或者最小的值。数组有多少个元素就需要比较几轮,但是倒数一轮比较的时候数组已经排好序了,即最后一轮比较是多余的,因此共比较(arr.lenth-1)轮。每轮相邻元素比较(arr.lenth-1)次,由于每轮比较会冒出一个排好序的值,因此每轮又可以减少之前冒泡得到的元素,因此每轮只需要比较(arr.length-1-第几轮)次。实现如下:

package com.kf;

import java.util.Arrays;

/**
 * 冒泡排序(相邻元素比较,每轮比较冒出一个最大或者最小的数。如果某一次没有交换位置则说明排序完成)
 *
 * @author LeiLei
 * @date 2019/7/2
 */
public class BubbleSort {

    /**
     * 总共比较次数
     */
    private static int count = 0;

    /**
     * 数组是否已经排序完成
     */
    private static boolean haveSorted = true;

    public static void main(String[] args) {
        Integer[] arr = {3,9,4,5,2,1,8};
        //Integer[] arr = {1,1,1,1,1,1,1};
        //39 94 45 52 21 18
        //94 45 52 21 18
        //45 52 21 18
        //52 21 18
        //21 18
        //18
        //1+2+3+4+5+6 = 2
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值