冒泡排序
冒泡排序是将每个数和前一个数进行比较,大的往后排,小的往前排 例如现在有一个数组 [2,5,1,3,6];
[2,5,1,3,6]
第一轮比较时 将2和5比,5本来就比2大,因此不要换,然后又将5和1比,
此时5大于1,因此位置互换,在将5和3,5大于3位置互换,最后5和6比,5不大于6,位置不变
得出结果如下 [2,1,3,5,6] 第一轮比完后已经将最大的比出来了
第二轮 2和1比 2大于1位置互换 ,然后2和3比,2不大于3位置不变,然后3和5比,3不大于5位置不变
得出结果如下 [1,2,3,5,6]
只要比较两次即可全部比完,
下面代码中的temp的作用便在此,首先将temp至为0 若进行了比较在赋值为1 若没进行比较则默认为0 若为0说明没有比较了,表示
此时已经比较完了,因此可以跳出循环,优化比较速度
代码
function Bubblesort(arr) {
let length = arr.length
for (let j = length - 1; j >= 0; j--) {
var temp = 0;
for (let i = 0; i < j; i++) {
//交换标志位初始值是0
//比较 i 和 i+1 位置的两个数据, 如果 i 位置 大于 i+1 的数据就进行数据交换
if (arr[i] > arr[i + 1]) {
// 交换
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp;
temp = 1;
}
}
if(temp == 0)
return ;
console.log(arr)
}
}
var arr = [2,5,1,3,6]
Bubblesort(arr)
输出