JS实现常见算法

1.排序算法

1.1 冒泡排序
思想:就是先将数组中一个最大(最小)的数找出来,使其处在数组的末尾(开端),然后将次大(小)的数再找出来,反复操作直至全部数组排序
原理(以找出大数举例):
a、将数组中第一个数和下一个数比较大小,第一个数小则位置不动,否则同第二个数交换位置
b、将新得到的第二个数继续和第三个数比较,重复第一步操作,直至倒数第二个数与数组最末尾的数比较了大小,这样就会得到一个最大的数在末尾,即是冒泡
c、忽略排好的数字,对原数组中剩下的数继续上述操作,直到所有数都排完
举个例子:

*2*,7,4,1=>
2,*7*,4,1=>
2,4,*7*,1=>
2,4,1,*7*   // 这样就找到了最大数
*2*,4,1,7
2,*4*,1,7
2,1,*4*,7   // 这样就找到了次大数
*2*,1,4,7
1,*2*,4,7   // 次次大数(已经有序)
*1*,2,4,7   // 排序成功

拓展:
空间复杂度(执行上述程序所需要的计算机内存,即执行所需要的计算机临时空间或者说辅助内存,这里指数组交换产生的临时变量)
		好的情况:0   // 原数组本身就排好了的
		差的情况:O(N)   // 原数组是逆序的
		平均下来就是:O(1)
时间复杂度(执行上述程序计算机花销的时间)
		好的情况:O(N)
		差的情况:O(N^2)
		平均下来就是(取最高阶):O(N^2)

JS实现代码:

function bubleSort(arr) {
  for(let i = 0; i < arr.length ; i++) {            /*i代表轮数*/
    for(let j = 0; j < arr.length - i ; j++) {      /*j代表当前轮选中的元素下标*/
      if(arr[j] > arr[j+1]) {
        [ arr[j], arr[j+1] ] = [ arr[j+1], arr[j] ] /*交换元素*/
      }
    }
  }
}
var arr = [2, 1, 4, 7]
bubleSort(arr)
console.log(arr)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值