冒泡排序

冒泡排序

思想

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢到数列的顶端,故名。

实例

package com.mylearn.algorithm.sort;

import org.apache.commons.lang.xwork.StringUtils;

/**

 * Created by IntelliJ IDEA.

 * User: yingkuohao

 * Date: 13-9-9

 * Time: 上午11:19

 * CopyRight:360buy

 * Descrption: 冒泡排序,循环比较,循环一次,找到一个最大的沉底,时间复杂度n*n

 * To change this template use File | Settings | File Templates.

 */

public class BubboSort {

    public static void main(String args[]) {

        Integer[] integers = new Integer[]{12, 15, 9, 24, 6, 31};

        BubboSort bubboSort = new BubboSort();

        System.out.println("初始:" + StringUtils.join(integers, ","));

        bubboSort.execute(integers);

        System.out.println("结果:" + StringUtils.join(integers, ","));

    }

    /**

     * 冒泡排序

     * @param objects

     */

    public void execute(Integer[] objects) {

        for (int i = objects.length-1 ; i > 0; i--) {

            //注意i的范围,最大为长度-1,否则下边的j+1会溢出

            for (int j = 0; j < i; j++) {

            //循环比较,每轮找到一个最大值直至沉底。

                if (objects[j] > objects[j + 1]) {

                    //如果j>j=1,则交换

                    swap(objects,j,j+1);

                }

            }

        }

    }

    /**

     * 交换

     * @param integers

     * @param i

     * @param j

     */

    private void swap(Integer[] integers, Integer i,Integer j) {

        Integer tmp = integers[i];

        integers[i] = integers[j];

        integers[j] = tmp;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值