冒泡排序
比较两个相邻的值,若后面的比前面的小,则将小的元素排到前面。依次循环直到结束。
代码
let arr = [10,20,9,8,79,200,65,100]
function sortHandle(arg){ //
let result = JSON.parse(JSON.stringify(arg)) // 拷贝一份儿,互不干扰
for(let i = 0; i < result.length; i++) { // 第一次循环,从0开始到结束,循环length次
for(let j = 0; j < result.length - i; j++) { // 再进行一次循环,进行对比
if(result[j] > result[j + 1]) { // 若前一项大于后一项,修改位置
let temp = result[j]
result[j] = result[j + 1]
result[j + 1] = temp
}
}
}
return result
}
效果
分析
主要是有两次循环
i = 0 外层循环过程中,内层进行循环j = 0 到 j = end(最后),第一遍排序将最大的数排到最后,结果应该是[10,9,8,20,79,65,100,200]
i = 1 再次执行j = 0 的循环,由于最大的数已经在最后了这也是j < arr.length - i 的巧妙之处,没有必要再次判断后面的最大的数(不写其实也没事的,简单理解成性能优化吧,不去执行没必要的操作)
i = 2 再次执行j = 0 的循环,依次类推
每次 i 循环中都会循环出当前循环中最大的数,并把其排到后面(一层层的排到后面)
然后就是将前一项值和后一项值赋值改变
end