码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-11-20 00:25:44      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:冒泡排序   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小知识点--冒泡排序详解

标签:冒泡排序   java   

原文地址:http://12258949.blog.51cto.com/12248949/1874619

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!