class Solution {
public int[] bubble_sort(int[] nums) {
int[] arr = Arrays.copyOf(nums, nums.length);
for (int i = 0; i < arr.length - 1; i++) {
boolean flag = true;
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
flag = false;
}
}
if (flag) {
break;
}
}
return arr;
}
}
最好的情况下O(N);
最坏的情况下O(N * (N-1)) 即O(N * N - N) 即 O(N * N);
在说一下没有优化后的冒泡排序的时间复杂度
class Solution {
public int[] bubble_sort(int[] nums) {
int[] arr = Arrays.copyOf(nums, nums.length);
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
return arr;
}
}
最好和最坏情况下时间复杂度都是O(N * (N-1)) 即O(N * N - N) 即 O(N * N);