Java 实现冒泡排序
- 一、原理
- 二、代码实现
- 三、运行结果
一、原理
冒泡排序是一种简单但效率较低的排序算法。其核心思想是通过相邻元素之间的比较和交换来逐渐将最大的元素“冒泡”到列表的最后。每一轮比较都会确定一个最大的元素的位置,因此需要进行 n-1
轮比较,其中 n
是列表中元素的个数。适用于小规模的数据排序。
原理如下:
- 从待排序的列表的第一个元素开始,依次比较相邻的两个元素。
- 如果前一个元素大于后一个元素,则交换这两个元素的位置,使得较大的元素排在后面。
- 继续比较下一对相邻元素,重复上述步骤,直到比较到列表的最后一个元素。
- 一轮比较结束后,最大的元素就会被放置在列表的最后一个位置。
- 然后,对除了最后一个元素的其他元素进行相同的比较和交换操作,直到所有元素都按照从小到大的顺序排列。
二、代码实现
//sourceArray 是待排序数组
public int[] bubbleSort(int[] sourceArray) {//拷贝原数组,不改变参数内容int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);int n = arr.length;for (int i = 0; i < n - 1; i++) {//用于标记本轮是否有序boolean flag = true;for (int j = 0; j < n - 1 - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;//进行交换值的操作,说明数组可能还是无序flag = false;}}if (flag) {break;}}return arr;
}
- 时间复杂度:
O(n^2)
- 空间复杂度:
O(n)
三、运行结果
排序前:
1 5 4 2 8 6
排序后:
1 2 4 5 6 8