排序算法-冒泡排序

冒泡排序是对序列进行循环遍历的一种排序方式,每次把最小或最大的元素放到序列的最前端。

1.代码实现

以java实现为例:

public class BubbleSort {
public static int[] bubbleSort(int[] nums) {
for (int i = 0; i < nums.length; i++) {
for (int j = i; j < nums.length; j++) {
if(nums[i] > nums[j]){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
return nums;
}
public static void main(String[] args) {
int[] nums = new int[] { 9, 8, 7, 6, 5, 4, 3, 2, 10 };
int[] newNums = bubbleSort(nums);
for (int x : newNums) {
System.out.print(x+" ");
}
}
}

2.数据运行解析

数据的分解示例如下

i=0时
[9 8 7 6 5 4 3 2 10]
-> [8 9 7 6 5 4 3 2 10]  
-> [7 9 8 6 5 4 3 2 10]
-> [6 9 8 7 5 4 3 2 10]
-> [5 9 8 7 6 4 3 2 10]
-> [4 9 8 7 6 5 3 2 10]
-> [3 9 8 7 6 5 4 2 10]
-> [2 9 8 7 6 5 4 3 10]
此时序列的最小元素已经放在最前,进入下一轮循环i=1时
-> [2 8 9 7 6 5 4 3 10]
-> [2 7 9 8 6 5 4 3 10]
.....

3.复杂度分析

冒泡排序在序列已经有序的情况下有最好时间复杂度O(n)(上述代码未实现,需要设置标识判断有序情况),最差和平均时间复杂度都是O(n²),空间复杂度为T(1)。

原文地址:https://www.cnblogs.com/cykfory/p/14097100.html