因为过一阵要面试 大厂都比较注重算法题 所以今天练习一个简单的冒泡算法
冒泡算法的基本原理为:
1.比较相邻的两个数 如果第一个数比第二个数大 那么就交换位置
2.那么每次比较一轮之后 最大的数将会到最右侧
3.所以综上方法对于长度为n的数组需要比较n-1次之后才能使数组排序完毕(为什么是n-1 因为最后就剩1个 他没的比了 他就是最小的)
4.那么每批次比的时候因为之前已经把最大的挑出来放到左边已经固定 所以每批次比就少1次 如果比了n批就少n次
由此我们可以写出代码
function maopao (arr) { for(let k=0;k<arr.length-1;k++) //之前说过了总共要比 数组长度-1 次 for(let i=0;i<arr.length-k-1;i++)//先减去之前已经排好的k个 再两两比较 { let swap=0 if(arr[i]>arr[i+1]){ //两个数比较大的放右边(两个杯子换水 要引入中间杯子swap) swap=arr[i+1]; arr[i+1]=arr[i]; arr[i]=swap; } } return arr }
原文地址:https://www.cnblogs.com/yuzeyang/p/9256396.html
时间: 2024-11-05 20:29:48