排序算法-冒泡排序
什么是冒泡排序
冒泡排序是一种简单的排序算法。一次比较两个相邻的元素值,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
此过程类似水里的气泡,从水底到水面的气泡越来越大。顾名思义叫做冒泡排序
算法原理
将相邻的两个数组元素值进行比较。如果第一个元素值比第二个元素值大,就交换两个元素值的位置。
对相邻元素值对都做同样的工作,从开始第一对到结尾的最后一对。这样,最后的元素值就是最大的数。
重复以上的步骤 (除了最后一个元素值)。
持续每次对越来越少的元素重复上面的步骤,直到没有任何元素值对需要比较
冒泡排序的作用
将数组元素值从小到大排序,解决桶排序浪费空间问题
交换数组元素的方法
方法一:使用第三方变量
方法二:使用es6的解构赋值
示例:

时间复杂度
例如示例中数组元素数量为11个
当i=0时,排序要经过11-1次比较
当i=1时,排序要经过11-2次比较
当i=2时,排序要经过11-3次比较
.......
.......
.......
当i=7时,排序要经过11-8次比较
当i=8时,排序要经过11-9次比较
当i=9时,排序要经过11-10次比较
如果将上面的元素个数转换成数量n
累加:(n-1)+(n-2)+(n-3)+........+3+2+1=(n^2-n)/2 (这里要感谢高斯同学.....)
根据计算时间复杂度的方法,结果最高次幂为n^2/2
所以冒泡排序的时间复杂度为O(n^2)

当输入的数据已经是正序时
最差时间复杂度 T(n) = O(n2)
当输入的数据是反序时(如果是这种,就反向操作吧)
空间复杂度
由于在排序过程中仅仅用到了一个可以重复使用的临时变量 temp ,用于交换两个相邻元素值的中转站,所以空间复杂度是个常数为O(1)