冒泡排序

2017-11-11  本文已影响53人  偏偏注定要落脚丶

1 .算法思想
冒泡排序是一种简单的交换类排序算法,能够将相邻的元素进行交换,从而逐步将待排序序列变成有序序列。冒泡排序的基本思想是:从头扫描待排序列,在扫描的过程中顺次比较相邻两个元素的大小。下面以升序为例介绍排序过程。

2.算法实现

import java.util.Arrays;

/**
 * @Author: 落脚丶
 * @Date: 2017/10/17
 * @Time: 下午3:00
 * @ClassName: BubbleSort
 * @Description: 冒泡排序
 */
public class BubbleSort {
    public static void main(String[] args) {
        int test[] = {49,38,97,76,13,27,34,12,64,5,62,99,98,54,56,
                18,23,15,35,51};
        bubbleSort(test);
        System.out.println(Arrays.toString(test));
    }
    public static void bubbleSort(int[] a) {
        boolean change = true;  // 标记是否发生交换
        for (int i = 1; i < a.length && change; i++) {
            change = false;
            for (int j = 0; j < a.length - 1; j++) {
                if (a[j] > a[j+1]) {
                    int tem = a[j+1];
                    a[j+1] = a[j];
                    a[j] = tem;
                    change = true;
                }
            }
        }
    }
}

3.算法复杂度分析
对于冒泡排序最坏的情况,即元素是逆序的,那么对于 n-1 趟冒泡则有:
   1+2+3+···+(n−1)=(n−1)n/2 =O(n2)(忽略if语句中的交换的时间)
最好的情况,输入已经是有序的序列,第二层 if 语句不执行(或者说只执行 1 次)。 故时间复杂度为:O(n)。平均情况:平均时间复杂度为 O(n2)。

上一篇 下一篇

猜你喜欢

热点阅读