简介
每次都是从集合的起始位置开始,两两比较交换,大值的向后移动,直至把最大值比较交换到集合无序部分的尾部,然后从初始位置开始进行下一次比较交换,依次这样执行,直至结束。
题目
给定一组数据进行冒泡排序,以 {9, 3, 4, 2, 0, 1, 5, 8}为例。
排序过程
时间复杂度O(N²)分析
第一次排序,需要比较N-1次;
第二次排序,需要比较N-2次;
......
第N-1次排序,需要比较1次;
比较次数=(N-1)+(N-2)+...+1=((1+ N-1)*(N-1))/2=N²/2 + N/2
所以时间复杂度为:O(N²)
代码
public void bubbleSort(int[] arr) {
if(arr == null || arr.length < 2) {
return;
}
for(int i = 0, len = arr.length - 1; i < len; i++) {
for(int j = 0; j < len - i; j++) {
if(arr[j] > arr[j + 1]) {
swap(arr, j, j+1);
}
}
}
}
public void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。