1、定义
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
2、基本思想
两两元素比较,满足条件则进行交换。即大数会慢慢沉到后面,小数会浮到前面,故名冒泡排序。
3、算法流程
以从小到大排序为例:
比较相邻元素大小,如果前面大于后面,则进行交换
- 第一趟排序第1位和第2位比较、交换,然后第2位和第3位比较、交换。一直到最后2位比较,交换。第一趟完成时最大的数在最后1位
- 第二趟排序第1位和第2位比较、交换······第二趟完成时将第二大的数移动到倒数第2位
- 第三趟排序第1位和第2位比较、交换······第三趟完成时将第三大的数移动到倒数第3位
…
最后需要n-1趟遍历
冒泡算法的原理是经过每一轮的比较都能确定这一轮的最大数
所以到后面的比较次数都是依次少一
动图演示(来源于网络资料)
4、复杂度分析
- 时间复杂度O(n^2)
- 空间复杂度O(1)
- 稳定性:稳定
5、代码实现
public int[] bubbleSort(int[] arr){
int temp = 0;
for (int i=0; i<arr.length-1;i++){
for (int j=0;j<arr.length-1 -i;j++){
if (arr[j] > arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}