冒泡排序
思想:
- 从第一个元素开始,每相邻的两个元素比较大小,假设是升序排序,则比较时,如果前一个元素大于后一个元素,则交换两个元素的位置。
- 接着继续比较下一个相邻元素的大小,依次类推直到比较到最后一个元素时,则第一次冒泡完成。
- 接着从第二个元素开始,执行第一次相同的比较操作。
- 反复执行以上步骤,直到第n-1次冒泡完成,即可结束排序,因为已经排序完成。
冒泡排序的平均时间复杂度:O(n^2)。即:n的平方。
注意:冒泡排序每一次冒泡都会将最大值或者最小值找到,并且放到相应的位置。
假设升序排序,那么第一次冒泡完成后,最后一个元素一定是最大值。
假设降序排序,那么第一次冒泡完成后,最后一个元素一定是最小值。
所以每一次冒泡完成之后,被冒泡出来的元素就可以不参与下次的比较。
缺点:
- 效率慢。不适用与大量数据的排序。
冒牌排序实现代码:
public class BubbleSort {