package sort;
import java.util.Arrays;
/**
* 冒泡排序:内层循环从后往前遍历,若比前一个小,则交换位置,最小的元素就像气泡一样浮到最前面
* @author:zhaidc@qq.com
* @date:2022年2月26日 下午7:03:02
*/
public class BubbleSort {
//测试函数
public static void main(String[] args) {
//测试普通的冒泡排序
int[] arr1 = new int[] {9,1,5,8,3,7,4,6,2};
bubbleSort(arr1);
System.out.print(Arrays.toString(arr1));
//测试改进的冒泡排序
int[] arr2 = new int[] {9,1,5,8,3,7,4,6,2};
bubbleSortNew(arr2);
System.out.print(Arrays.toString(arr2));
}
/**
* 普通的冒泡排序
* @param arr 待排序数组
*/
public static void bubbleSort(int[] arr) {
for(int i = 0;i < arr.length - 1;i++) {
for(int j = arr.length - 1;j > i;j--) {
if(arr[j] < arr[j - 1]) {
int tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
}
}
}
}
/**
* 改进的冒泡排序,避免数组有序后依然进行重复比较
* @param arr 待排序数组
*/
public static void bubbleSortNew(int[] arr) {
//增加标志位
boolean flag = true;
//flag为false时,循环结束
for(int i = 0;i < arr.length && flag;i++) {
//开始交换前将flag置为false
flag = false;
for(int j = arr.length - 1;j > i;j--) {
if(arr[j] < arr[j - 1]) {
int tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
//若发生交换,则flag置为true
flag = true;
}
}
}
}
}
冒泡排序——Java实现
于 2022-02-26 20:46:18 首次发布