标签:bubble i++ 算法 最小值 第一个 顺序 最小 相等 临时
可以看出,经过一次冒泡操作之后, 6这个元素已经存储在正确的位置上。要想完成所有数据的排序,我们只要进行6次这样的冒泡操作就行了。
public static void bubbleSort(int[] arr) {
if (arr.length <= 1)
return;
for (int i = 0; i < arr.length; i++) {
boolean b = false;
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
b = true;
}
}
if (!b) {
break;
}
}
}
public static void insertionSort(int[] arr) {
int n = arr.length;
if (n <= 1) {
return;
}
for (int i = 0; i < n; i++) {
int value = arr[i];
int j = i - 1;
// 查找插入的位置
for (; j >= 0; --j) {
if (arr[j] > value) {
arr[j + 1] = arr[j];//移动数据
} else {
break;
}
}
arr[j + 1] = value;//插入数据
}
}
public static void selectionSort(int[] arr) {
int length = arr.length;
if (length == 1) {
return;
}
int x;
for (int i = 0; i < length; i++) {
x = i;
for (int j = i + 1; j < length; j++) {
if (arr[x] > arr[j]) {
x = j;
}
}
if(x != i){
int tmp = arr[i];
arr[i] = arr[x];
arr[x] = tmp;
}
}
}
空间复杂度 | 是否稳定 | 最好时间复杂度 | 最坏时间复杂度 | 平均时间复杂度 | |
---|---|---|---|---|---|
冒泡排序 | Q(1) | 是 | Q(n) | Q(n2) | Q(n2) |
插入排序 | Q(1) | 是 | Q(n) | Q(n2) | Q(n2) |
选择排序 | Q(1) | 否 | Q(n2) | Q(n2) | Q(n2) |
标签:bubble i++ 算法 最小值 第一个 顺序 最小 相等 临时
原文地址:https://www.cnblogs.com/xiexiandong/p/13040515.html