【算法】冒泡排序
前言:
冒泡排序是一种简单的排序算法,基本思想是通过重复遍历待排序的数列,比较相邻元素并交换它们的位置,以将较大(较小)的元素 “冒泡” 到数列的末端。
正文:
一、冒泡排序的关键步骤:
1、比较相邻的步骤
2、遍历整个数列
3、循环执行
二、冒泡排序的复杂度:
最好的情况:O(n) ,此时说明我们的数据已经处于一个有序的状态。
最坏和平均的情况:O(n的2次方)
三、冒泡排序的特点:
1、稳定性:即相等的元素在排序后仍保持原有的顺序性。
2、简单:实先简单,易理解,不易使用在大型数据中。
四、java代码示例
package com.muyu.cloud.system.test;
/**
* @author: 宁兴星
* Date: 2024/9/12 17:43
* Description:
*/
public class BubbleSort {
// 冒泡排序方法
public static void bubbleSort(int[] arr) {
int n = arr.length;
boolean swapped;
// 外层循环控制比较的轮数
for (int i = 0; i < n - 1; i++) {
swapped = false;
// 内层循环进行相邻元素的比较与交换
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
// 交换 arr[j] 和 arr[j + 1]
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
swapped = true; // 标记发生了交换
}
}
// 如果没有发生交换,数组已经有序,提前结束
if (!swapped) {
break;
}
}
}
// 主方法进行测试
public static void main(String[] args) {
int[] array = {64, 34, 25, 12, 22, 11, 90};
System.out.println("原数组:");
printArray(array);
bubbleSort(array);
System.out.println("排序后的数组:");
printArray(array);
}
// 打印数组的辅助方法
public static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
}
执行结果(升序):
如需要降序,将 > 修改为 < 即可:
执行结果: