js中的排序算法

js中的排序算法

1.冒泡排序

元素两两对比,值较小的数往前面排

for (let i = 0; i < arr.length ; i++) {
      for (let j = 0; j < arr.length-1; j++) {
          //相邻元素对比
          if (arr[j] > arr[j+1]) {
              let temp = arr[j+1]
              arr[j+1] = arr[j]
              arr[j] = temp
          }
        console.log(1111) 
      }
    }
    console.log(arr)
    }
    bub([25, 45, 63, 1, 27, 1, 5, 9, 85, 42, 14])

当然,我们还可以优化一下
在这里插入图片描述

for (let i = 0; i < arr.length-1 ; i++) {
      for (let j = 0; j < arr.length-1-i; j++) {
          //相邻元素对比
          if (arr[j] > arr[j+1]) {
              let temp = arr[j+1]
              arr[j+1] = arr[j]
              arr[j] = temp
          }
        console.log(1111) 
      }
    }
    console.log(arr)
    }
    bub([25, 45, 63, 1, 27, 1, 5, 9, 85, 42, 14])

这样的话循环的次数会变少
在这里插入图片描述

2.选择排序

遍历数组,选择最小的数放在前面

 function sel(arr) {
     let minIndex,temp
     for (let i = 0; i < arr.length-1; i++) {
        minIndex = i
        for (let j = i+1; j < arr.length; j++) {
          if (arr[j]<arr[minIndex]) {
              minIndex = j
          }
          console.log(11111)
        }
        temp = arr[i]
        arr[i] = arr[minIndex]
        arr[minIndex] = temp
       
     }
     console.log(arr)
   }
    sel([25, 45, 63, 1, 27, 1, 5, 9, 85, 42, 14])

当然了,他的执行次数也是55次,是一直非常稳定的算法之一,因为时间复杂度固定,所以进行排序的数据越小越好

3.插入排序

反复把数据往后挪,给需要插入的数据空出位置

function int(arr) {
      let preIndex,current
        for (let i = 1; i < arr.length; i++) {
          preIndex = i - 1
          current = arr[i]
          while (preIndex >= 0 && arr[preIndex] > current) {
            arr[preIndex + 1] = arr[preIndex]
            preIndex-- 
          }
          arr[preIndex + 1] = current
          console.log(1111) //代表执行次数
        }
        console.log(arr)
    } 
    int([25, 45, 63, 1, 27, 1, 5, 9, 85, 42, 14])

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值