冒泡排序俗称穷举法或者蛮力法排序,是一种效率比较低的排序方式,时间复杂度O(n^2) ,在数据量非常大的情况下,速度非常慢,只适用于数据量小的排序场景。
描述:
比较相邻两个元素大小,若前一个比后一个大,则交换位置,每一轮交换结束最大的元素都会被排到最后,重复操作至排序完成。
动画:
ps:图片来自https://www.cnblogs.com/onepixel/articles/7674659.html
代码:
private void bubbleSort(int[] array){
for (int i = array.length - 1; i > 1; i--) {
for (int j = 0; j < i; j++) {
if (array[j] > array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
上面是基础版冒泡排序的写法,同学们都知道这种写法是可以优化的,假如程序在走到一半的时候数组已经是排好序的,这时候程序就不会再进行交换操作,后面的代码也就没必要继续执行了。
private void bubbleSort(int[] array){
for (int i = array.length - 1; i > 1; i--) {
//有没有交换记录
boolean hasSwap = false;
for (int j = 0; j < i; j++) {
if (array[j] > array[j+1]){
int temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
hasSwap = true;
}
}
//如果本次循环没有交换操作,直接退出
if (!hasSwap){
break;
}
}
}
网友评论