数据结构与算法 - 排序 1. 冒泡排序

每天写点数据结构与算法, 今天的算法是排序, 第一种也是最简单的排序算法: 冒泡排序.直接上代码, 思路看注释.加上了对冒泡排序的优化.
复制代码
空间复杂度: O(1), 因为是就地排序;
时间复杂度: O(n^2) <-- 平均时间复杂度
版权声明: 本文为 InfoQ 作者【小马哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/d66c346c725fd3ee39473ab0b】。文章转载请联系作者。

每天写点数据结构与算法, 今天的算法是排序, 第一种也是最简单的排序算法: 冒泡排序.直接上代码, 思路看注释.加上了对冒泡排序的优化.
public class BubbleSort { /** * 执行冒泡排序 * @param arrays 待排序数组 * @param order 正序or逆序 * @return */ public static int[] sort(int[] arrays, boolean order) { // 1, 特殊情况, 数组的长度小于等于1, 没有必要排序, 直接返回 if (arrays.length <= 1) { return arrays; } // 2, 根据order确定是正序, 还是倒序拍你 int flag = order ? 1 : -1; // 3, 数据交换标志位 boolean change = false; int temp = 0; for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays.length - i - 1; j++) { if (flag * (arrays[j] - arrays[j + 1]) > 0) { temp = arrays[j]; arrays[j] = arrays[j + 1]; arrays[j + 1] = temp; change = true; } } // 优化, 如果没有数据交换, 则提前退出 if (!change) { break; } } return arrays; } /** * 执行冒泡排序 重载方法 默认执行正序排序 * @param arrays 待排序数组 * @return */ public static int[] sort(int[] arrays) { return sort(arrays, true); }}空间复杂度: O(1), 因为是就地排序;
时间复杂度: O(n^2) <-- 平均时间复杂度
版权声明: 本文为 InfoQ 作者【小马哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/d66c346c725fd3ee39473ab0b】。文章转载请联系作者。
自强不息,厚德载物 2018.12.22 加入
像一棵竹子那样, 不断的扎根积累, 活出节节高的人生!

促进软件开发及相关领域知识与创新的传播
京公网安备 11010502039052号


评论