排序算法的java实现-冒泡排序

1. 基本思想:
两两比较待排序数据元素的大小,发现两个数据元素的次序相反时即进行交换,直到没有反序的数据元素为止。
2. 排序过程:
设想被排序的数组R[1..N]垂直竖立,将每个数据元素看作有重量的气泡,根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R,凡扫描到违反本原则的轻气泡,就使其向上"漂浮",如此反复进行,直至最后任何两个气泡都是轻者在上,重者在下为止。
【示例】:

原始数列: 49 38 65 97 76 13 27 49

第一趟:     38 49 65 76 13 27 49                 97

第二趟:     38 49 65 13 27 49                 76 97

第三趟:     38 49 13 27 49                 65 76 97

第四趟:     38 13 27 49                 49 65 76 97

第五趟:     13 27 38                 49 49 65 76 97

第六趟:     13 27                 38 49 49 65 76 97



import java.util.Arrays;

/**
 * @author zhuangguoshuai
 * @description 冒泡排序算法。
 * @create 2017-10-18 14:40
 **/
public class BubbleSort {

    /**
     * 遍历数组相邻元素进行比较
     * @param array
     */
    public static void bubble(int[] array) {
        for(int i = array.length - 1; i > 0; i --) {
            for(int j = 0; j < i; j ++) {
                if (array[j] > array[j+1]) {
                    swap(array, j, j+1);
                }
            }
        }
    }

    /**
     * 将数组的m和n位置上的元素互换
     * @param array
     * @param m
     * @param n
     */
    private static void swap(int[] array, int m, int n) {
        int tmp = array[m];
        array[m] = array[n];
        array[n] = tmp;
    }

    public static void main(String[] args) {
        int[] array = new int[]{49, 38, 65, 97, 76, 13, 27,49};
        bubble(array);
        System.out.println(Arrays.toString(array));
    }
}
 
算法复杂度:
平均O(n^2) 最坏O(n^2) 额外空间O(1) 
     




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值