package SortTest;
/*
* 冒泡排序(从小到大)
* 一趟一趟的比较,比较相邻元素的大小,每趟最大的元素沉入最后的位置
* 稳定
* 平均时间复杂度O(n*n)
* 最坏时间复杂度O(n*n)
* 空间复杂度O(1)
* n较小时使用
*/
public class BubbleSort {
public static void bubbleSort(int[] arr) {
int length = arr.length;
int temp;
for (int i = 0; i < length - 1; i++){//外层循环表示比较的趟数,有i个数则最多需要比较 i-1 趟
boolean flag = false;//立flag看是否发生交换
for (int j = 0; j < length - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;//发生了交换,说明还未排好序
}
}
if (!flag){//如果flag为false,说明这趟没有发生交换,已经排序完成,跳出循环
break;
}
}
}
}
/*
* 冒泡排序(从小到大)
* 一趟一趟的比较,比较相邻元素的大小,每趟最大的元素沉入最后的位置
* 稳定
* 平均时间复杂度O(n*n)
* 最坏时间复杂度O(n*n)
* 空间复杂度O(1)
* n较小时使用
*/
public class BubbleSort {
public static void bubbleSort(int[] arr) {
int length = arr.length;
int temp;
for (int i = 0; i < length - 1; i++){//外层循环表示比较的趟数,有i个数则最多需要比较 i-1 趟
boolean flag = false;//立flag看是否发生交换
for (int j = 0; j < length - 1 - i; j++) {
if (arr[j] > arr[j+1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;//发生了交换,说明还未排好序
}
}
if (!flag){//如果flag为false,说明这趟没有发生交换,已经排序完成,跳出循环
break;
}
}
}
}