排序算法:冒泡排序
2023-09-14 08:57:32 时间
1. 冒泡排序的基本思想
冒泡排序的英文Bubble Sort,是一种最基础的交换排序。其基本思想是:把相邻的元素两两比较,根据大小来交换元素的位置。
对于以上数组,一轮排序过程如下:
首先让5和8比较,发现5比8要小,因此元素位置不变。接下来让8和6比较,发现8比6要大,所以8和6交换位置。
按照上面的比较规则一直比下去,一轮比较完之后数组的排序如下。
按照上面的规则再进行第二轮比较,知道数组有序为止。
2. 代码实现
public static void bubbleSortV1(int[] array) {
int tmp = 0;
for (int i = 0; i < array.length; i++) {
for (int j = array.length - 1; j > i; j--) {
if (array[j] < array[j - 1]) {
tmp = array[j - 1];
array[j - 1] = array[j];
array[j] = tmp;
}
}
}
}
上面的代码有一个不足之处就是,对于有序数组或者是基本有序数组还是要“傻傻”进行排序。比如数组里面的元素是:
1, 2, 3, 4, 5, 6, 7
对于这种情况我们的排序算法可以进行以下的优化
public static void bubbleSortV1(int[] array) {
int tmp = 0;
//int count =0;
for (int i = 0; i < array.length; i++) {
for (int j = array.length - 1; j > i; j--) {
//count++;
if (array[j] < array[j - 1]) {
tmp = array[j - 1];
array[j - 1] = array[j];
array[j] = tmp;
}
}
}
//System.out.println("v1比较次数:"+count);
}
3. 复杂度分析
- 时间复杂度:o(n^2)
- 空间复杂度:o(1)
4. 原文链接
相关文章
- 【排序算法】插入排序
- 经典排序算法 - 冒泡排序&快速排序
- Java实现蓝桥杯算法提高12-2扑克排序
- Java实现 蓝桥杯VIP 算法提高 大数加法
- Java实现 蓝桥杯VIP 算法提高 身份证排序
- Java实现 蓝桥杯VIP 算法训练 快速排序
- Java实现 蓝桥杯VIP 算法训练 完数
- Java实现 蓝桥杯VIP 算法训练 阶乘末尾
- (算法)海盗分赃_2
- (算法)最长回文子串
- (算法)随机播放歌曲
- 算法常识——快速排序
- 排序算法 - 冒泡排序
- 【插入排序】十大排序算法之插入排序
- 带你掌握4种Python 排序算法
- 基于自适应调整权重和搜索策略的鲸鱼优化算法-附代码
- 【数据结构与算法Python实践系列】5分钟学会经典排序算法-冒泡排序
- 快速排序算法
- 【算法】实验 2 排序
- 排序算法之冒泡排序
- 经典排序算法 - 冒泡排序Bubble sort
- 排序算法
- C语言经典排序算法实现(一):double与int数据类型的冒泡排序
- C++ 实现十大排序算法
- 数据结构与算法_24 _ 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树
- 数据结构与算法_11 _ 排序(上):为什么插入排序比冒泡排序更受欢迎
- 02、算法系列,选择排序的代码实现 + 讲解
- 程序员内功:八大排序算法
- 【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析