冒泡排序
冒泡排序(Bubble Sort),它是一种最为基础的交换排序。之所以叫冒泡排序,是因为这一种排序算法的每一个元素可以根据自身的大小,一点点的向着一侧来移动。
每一轮都会找到一个最大的数字冒泡到数组数组末尾来完成 排序。
原始的冒泡排序是最稳定的,但是这个算法每一轮都需要遍历一次所有的元素,所以它的轮转次数和数量是相当的,时间复杂度为O(n^2)。
import java.util.Arrays;
/**
* @author Lu.F
* @version 1.0
* @date 2023/1/29 14:27
*/
public class BubbleSortDemo {
public static void main(String[] args) {
int[] arr = new int[]{1, 3, 5, 6, 2, 9, 10, 8, 7};
// bubbleSortAsc(arr);
bubbleSortDesc(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 冒泡排序,每比较一轮,循环的次数就要减少一次 =》每轮都会把最大的数字放到最后
* 升序
* @param arr
* @return
*/
public static int[] bubbleSortAsc(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
// 临时变量
int temp;
if (arr[j] > arr[j + 1]) {
// 升序,前一位数比后一位数大则进行交换
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("第" + (i + 1) + "轮遍历结果:" + Arrays.toString(arr));
}
return arr;
}
/**
* 冒泡排序,每比较一轮,循环的次数就要减少一次 =》每轮都会把最大的数字放到最后
* 降序
* @param arr
* @return
*/
public static int[] bubbleSortDesc(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
// 临时变量
int temp;
if (arr[j] < arr[j + 1]) {
// 降序,前一位数比后一位数小则进行交换
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
System.out.println("第" + (i + 1) + "轮遍历结果:" + Arrays.toString(arr));
}
return arr;
}
}