冒泡排序实现
public int[] bubble(int[] arr) {
int i, j, len = arr.length;
// 总共需要走n-1轮
for (i = 0; i < len - 1; i++) {
// 每一轮确定一个元素,j < len - 1 - i表示i轮之后有i个元素被确定,不再纳入比较中
for (j = 0; j < (len - 1 - i); j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
时间复杂度:
第一轮排序需要n-1次,最后一次排序需要1次
((n-1)+1)*n/2–>舍去常数–>O(n^2)
冒泡排序改进
public int[] bubble(int[] arr) {
int i, j, len = arr.length;
// 总共需要走n-1轮
for (i = 0; i < len - 1; i++) {
// 每一轮确定一个元素,j < len - 1 - i表示i轮之后有i个元素被确定,不再纳入比较中
for (j = 0; j < (len - 1 - i); j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr;
}
时间复制度:
最优:本来就是已经排序完的,只要一遍对比,为O(n)
最差:O(n^2)