算法练习_冒泡排序

概念

问题描述

给定无序数组,将数组按从小到大的顺序排列。

算法思想

遍历数组,将每一个元素与其下一个元素进行比较。如果与需要排定的顺序相反,则交换两个元素,当第一次遍历完成,最后的元素会是最大的。重复进行这个走访并交换的操作,整个过程像冒泡泡一样,越小的元素会逐渐 “冒” 到顶端,而越大的元素则会逐渐 “沉” 到底,知道整个数组排序完成。

图解

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
* @author zhyee
* @date 2018/10/18 下午6:06
*/
public class BubbleSort {
public int[] bubbleSort(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
for (int j = 0; j < a.length - i - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
return a;
}
}

特点

冒泡排序的时间复杂度与插入排序一样都是平方级别,但冒泡排序会对已经排序好的数组拙劣地运行,仍旧执行O(n^2^)次操作。