冒泡排序
原理:依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面。依照这个规则进行多次并且递减的迭代,直到顺序正确。
查阅说明
时间复杂度指的是一个算法执行所耗费的时间
空间复杂度指运行完一个程序所需内存的大小
稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面
不稳定指,如果a=b,a在b的前面,排序后可能会交换位置
时间复杂度,空间复杂度,稳定性
平均时间复杂度O(nn)
最好情况O(n)
最差情况O(nn)
空间复杂度O(1)
稳定性:稳定
具体js 写法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>冒泡排序</title>
</head>
<body>
<script>
var numArr = [67,51,18,32,75,34,90,16,20];
function sort(arr){
for (var i = 0; i < arr.length -1; i++) {
for (var j = 0; j < arr.length -1 - i; j++) {
if (arr[j] > arr[j + 1]) {
var t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
return arr;
}
sort(numArr);
document.write(numArr);
</script>
</body>
</html>
解析
其中有两个循环
当i=0的时候,里面的循环完整执行,从j=0执行到j=7,这也就是第一遍排序,结果是将最大的数排到了最后。
当i=1的时候,里面的循环再次完整执行,由于最大的数已经在最后了,没有必要去比较数组的最后两项,
以此类推
补充
事件传递有两种方式:冒泡与捕获。
事件传递定义了元素事件触发的顺序。 如果你将 p 元素插入到 div元素中,用户点击 p元素, 哪个元素的 “click” 事件先被触发呢?
在 冒泡 中,内部元素的事件会先被触发,然后再触发外部元素,即p 元素的点击事件先触发,然后会触发div元素的点击事件。
在 捕获 中,外部元素的事件会先被触发,然后才会触发内部元素的事件,即div 元素的点击事件先触发 ,然后再触发 p元素的点击事件
47万+

被折叠的 条评论
为什么被折叠?



