美文网首页
js排序算法

js排序算法

作者: allen_tian | 来源:发表于2020-10-08 17:56 被阅读0次
    let a = [3,2,4,8,423,455,22,32423,98] // 都来排我
    

    1、冒泡排序

    原理:两两对比,大的去右边

    function sortBubble (arr) {
      // 要排arr.length轮,每轮排序把当前参与排序的数中最大的数放到最右边,每个下一轮排序的个数都会比上一轮减少一个
      for (let i = 0; i < arr.length; i++) { // 外层控制轮数
        for (let j = 0; j < arr.length - i; j++) { // 内层控制相邻两个数比较
          if (arr[j] > arr[j+1]) {
            let temp = arr[j]
            arr[j] = arr[j+1]
            arr[j+1] = temp
          }
        }
      }
      return arr
    }
    

    2、选择排序

    原理:依次拿一个数与余下的每个数对比,小的放最前面

    function sortChoose (arr) {
      // 依次拿第一个数与后面的每个数对比,最小的放在最前面,之后再从第二个数开始,以此类推
      for (let i = 0; i < arr.length; i++) { // 拿的未排序数组最前面的数
        for (let j = i + 1; j < arr.length; j++) { // 遍历与最前面的数对比的余下数
          if (arr[i] > arr[j]) {
              let temp = arr[i]
              arr[i] = arr[j]
              arr[j] = temp
          }
        }
      }
      return arr
    }
    

    3、插入排序

    原理:依次把要排序的元素拿到一个新的数组中,每拿来一个元素都把新数组从后向前遍历对比,找到新数组中第一个小于拿来的元素的位置,把拿来的元素插入到第一个小于的元素后面

    function sortInsert (arr) {
      let sortArr = [arr[0]]
      for (let i = 1; i < arr.length; i++) {
        sortArr[sortArr.length] = arr[i]
        for (let j = sortArr.length - 1; j >= 0; j--) {
          if (sortArr[j+1] < sortArr[j]) {
            let temp = sortArr[j+1]
            sortArr[j+1] = sortArr[j]
            sortArr[j] = temp
          }
        } 
      }
      return sortArr
    }
    

    感觉插入排序包含了冒泡排序

    相关文章

      网友评论

          本文标题:js排序算法

          本文链接:https://www.haomeiwen.com/subject/zbpwohtx.html