作为最简单的排序算法之一,冒泡排序给我的感觉就像Abandon在单词书里出现的感觉一样,每次都在第一页第一位,所以最熟悉。。。冒泡排序还有一种优化算法,就是立一个flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。。。
冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。
以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。
<script>
// 冒泡排序比较完之后直接交换位置
var arr = [78,50,54,78,5,86,8,3,87];
for (var j = 0; j < arr.length - 1; j++) {
// 控制需要比较的大轮次
for (var i = 0; i < arr.length-j-1; i++) {
// 控制每一次参与比较的元素
if (arr[i] > arr[i + 1]) {
// 判断交换
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
// 解构交换
}
}
}
console.log(arr);
</script>