冒泡排序思想:类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来,假设从小到大,即为较大的数慢慢往后排,较小的数慢慢往前排
简单理解就是:每一趟遍历,将一个最大的数移到序列末尾
代码实现如下:
/**
* 冒泡排序具体实现
* @param arr
*/
private static void bubbleSort(int[] arr) {
if(arr==null || arr.length < 2 ){
return;
}
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < (arr.length-1)-i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
/**
* 冒泡排序优化版
* @param arr
*/
private static void bubbleSort2(int[] arr) {
if(arr==null || arr.length < 2 ){
return;
}
for (int i = 0; i < arr.length - 1; i++) {
boolean swap=false;
for (int j = 0; j < (arr.length-1)-i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swap=true;
}
}
if(!swap) break;
}
}
冒泡排序是稳定的排序算法
时间复杂度:O(n^2)