冒泡排序(Selection Sort)
原理:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
工具类
public class Utils {
//打印数组
static void printArr(int[] arrs) {
for (int x : arrs) {
System.out.print(x + " ");
}
}
//用于交换数组两个下标的位置
static void swap(int[] arrs, int x, int y) {
int temp = arrs[x];
arrs[x] = arrs[y];
arrs[y] = temp;
}
}
逻辑代码
public class BubbleSort {
public static void main(String[] args) {
int[] arrs = {3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48};
int len = arrs.length;
for (int i = 1; i < len; i++) {
for (int j = 0; j < len - i; j++) {
if (arrs[j] > arrs[j + 1]) {
Utils.swap(arrs, j, j + 1);
}
}
System.out.print("第" + i + "次排序结果:");
Utils.printArr(arrs);
System.out.println();
}
}
}
1.结果展示
第1次排序结果:3 38 5 44 15 36 26 27 2 46 4 19 47 48 50
第2次排序结果:3 5 38 15 36 26 27 2 44 4 19 46 47 48 50
第3次排序结果:3 5 15 36 26 27 2 38 4 19 44 46 47 48 50
第4次排序结果:3 5 15 26 27 2 36 4 19 38 44 46 47 48 50
第5次排序结果:3 5 15 26 2 27 4 19 36 38 44 46 47 48 50
第6次排序结果:3 5 15 2 26 4 19 27 36 38 44 46 47 48 50
第7次排序结果:3 5 2 15 4 19 26 27 36 38 44 46 47 48 50
第8次排序结果:3 2 5 4 15 19 26 27 36 38 44 46 47 48 50
第9次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第10次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第11次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第12次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第13次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
第14次排序结果:2 3 4 5 15 19 26 27 36 38 44 46 47 48 50
2.演示图:
演示图片为转载,转载地址:https://www.runoob.com/w3cnote_genre/algorithm
总结
时间复杂度(平均) | 时间复杂度(最好) | 时间复杂度(最坏) | 空间复杂度 | 稳定性 |
---|---|---|---|---|
O(n²) | O(n²) | O(n) | O(1) | 稳定 |
来源:CSDN
作者:秋楓扫落叶
链接:https://blog.csdn.net/qq_34869990/article/details/104030859