java 冒泡排序


思路

  1. 将序列当中的左右元素,依次比较,保证右边的元素始终大于左边的元素;( 第一轮结束后,序列最后一个元素一定是当前序列的最大值;)
  2. 对序列当中剩下的n-1个元素再次执行步骤1。
  3. 对于长度为n的序列,一共需要执行n-1轮比较

时间复杂度

最佳情况:T(n) = O(n) 最差情况:T(n) = O(n2) 平均情况:T(n) = O(n2)

代码


import java.util.Arrays;

/**
 * 冒泡排序
 * @author remainsu
 * @version 1.0 2019-05-29
 */
public class BubbleSort {

    /**
     * 排序方法
     * @param arr 要排序的数组
     * @return toString 方便输出
     */
    public static String bubbleSort(int[] arr) {

        int tmp;
        //int count = 0;
        // 冒泡次数
        for(int a=0; a<arr.length-1; a++ ) {
            
            //count = a+1;
            boolean flag = false;
            // 比较未移动的
            for(int b=0; b<arr.length-a-1; b++ ) {
                // 后面的小于前面的,则互换位置
                if(arr[b+1] < arr[b]) {
                    tmp = arr[b];
                    arr[b] = arr[b+1];
                    arr[b+1] = tmp;
                    
                    //有数据移动,则状态标位true
                    flag = true;
                }
            }
            //没有数据移动,即数组已经有序,直接退出
            if(!flag) break;
        }
        
        //System.out.println("冒泡的次数:"+ count);
        return Arrays.toString(arr);
    }
    
    public static void main(String[] args) {
        
        int[] arr = {111, 3, 5, 52, 74, 312, 75, 3, 764, 3, 2111, 7, 31};
        //int[] arr = {1,2,10,3,4,5,6,7,8,9};
        
        System.out.println("排序后的数组:"+ bubbleSort(arr));
    }
    

参考

  1. https://blog.csdn.net/hellozhxy/article/details/79911867
优质内容筛选与推荐>>
1、WSDL webservice语言
2、【APIO2009T3】抢掠计划-强连通分量缩点+DAG单源最长路
3、未能创建 SSL/TLS 安全通道解决方案
4、Servlet中参数获取方法
5、【转】Makefile与configure


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号