冒泡排序
排序算法 |
平均事件复杂度 |
最好情况 |
最坏情况 |
空间复杂度 |
稳定性 |
排序方式 |
冒泡排序 |
$O(n^2)$ |
$O(n)$ |
$O(n^2)$ |
$O(1)$ |
稳定 |
In-place |
简介
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。
它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢”浮”到数列的顶端。
算法思想
算法步骤
代码实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public class BubbleSort implements IArraySort {
@Override public int[] sort(int[] sourceArray) throws Exception { int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
for (int i = 1; i < arr.length; i++) { boolean flag = true; for (int j = 0; j < arr.length - i; j++) { if (arr[j] > arr[j + 1]) { int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp;
flag = false; } }
if (flag) { break; } } return arr; } }
|
复杂度分析
最好
最坏
空间