侧边栏壁纸
  • 累计撰写 32 篇文章
  • 累计创建 38 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

排序算法(一):冒泡排序

一杯香梨
2022-11-20 / 0 评论 / 0 点赞 / 147 阅读 / 0 字

算法原理:

  1. 比较相邻元素,前者比后者大(小),则交换位置;
  2. 对每个相邻元素重复第一步,每轮过后,排序最后的元素是该轮排序的最大(小)值;
  3. 对所有的元素重复第一和第二步骤,排好序的元素不进行比较;
  4. 每次对越来越少的元素重复上述步骤,直至排序结束。

算法分析

时间复杂度


假设待排序序列中有n个元素,则第一轮比较为(n-1)次,第二轮比较次数为(n-2),以此类推,总的比较次数为:

(n-1)+(n-2)+(n-3)+ ··· + 2

根据大O表示法,该排序算法的时间复杂度为:O(n^2)


算法稳定性


冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。【来自百度百科】


算法实现

public class BubbleTest {
        private static final int[] array = {5, 13, 6, 1, 2, 9, 11, 60, 99, 3, 7};

        public static void main(String[] args) {
            print(array);
            Bubble(array);
            System.out.println();
            print(array);
        }

        public static int[] print(int[] array) {
            for (int i : array) {
                System.out.print(i + " ");
            }
            return array;
        }

        public static void Bubble(int[] array) {
            for (int i = 0; i < array.length - 1; i++) {
                for (int j = i + 1; j < array.length; j++) {
                    if (array[i] > array[j]) {
                        int temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
        }
    }
0

评论区