首页 > 代码库 > 菜鸟之Java小知识点--冒泡排序详解

菜鸟之Java小知识点--冒泡排序详解

冒泡排序额思想简单来说就是:相邻两个数比较,将最大额或者最小的放在最后

下面分析一个数组[21,78,52,18,34,11]进行从大到小排序.

如下图.为第一轮比较的过程,依次比较相邻两个元素,第一轮比较完后将最大的78放在了最后

第一轮:比较了5次,交换 4次


技术分享

第二轮:比较了4次,交换 3次

技术分享

第三轮:比较了3次,交换 1次

技术分享

第四轮:比较了2次,交换 1次

技术分享

第五轮:比较了1次,交换 1次

技术分享


统计:6个元素总共比较了5轮,比较了15次,交换 10次

    公式:比较轮数=n-1轮,

            比较次数=n*(n-1)/2次

上代码

工具类:

package com.darlingPig.utils;
/**
 * 数组工具类
 * @author darlingPig
 * @since 2016-11-19
 *
 */
public class ArrayUtils {

    /**
     * 冒泡排序
     * 
     * @param arr
     * @return
     */
    public static int[] sort(int[] arr) {
        for (int i = arr.length-1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j + 1];
                    arr[j + 1] = arr[j];
                    arr[j] = temp;
                }
            }
        }
        return arr;
    }
}

测试类:

package com.darlingPig.test;

import com.darlingPig.utils.ArrayUtils;

public class Test {

    public static void main(String[] args) {

        //要排序的数组
        int[] arr = {12,52,78,18,34,11};
        //调用工具类写好的冒泡排序方法,返回一个排好序的数组
        arr = ArrayUtils.sort(arr);
        //遍历数组
        for (int i : arr) {
            System.out.println(i);
        }
    }

}


本文出自 “12248949” 博客,请务必保留此出处http://12258949.blog.51cto.com/12248949/1874619

菜鸟之Java小知识点--冒泡排序详解