美文网首页
算法相关:常用排序

算法相关:常用排序

作者: _菩提本无树_ | 来源:发表于2020-10-29 15:45 被阅读0次

排序:直接上代码

<template>
  <div class="bottom">
  </div>
</template>

<script>
export default{
  mounted () {
    var arr = [21, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 432]
    this.quickSort(arr, 0, arr.length - 1)
  },
  methods: {
    // 选择排序
    chosedSort () {
      var arr = [1, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 33423, 432]
      for (let index = 0; index < arr.length - 1; index++) {
        let num = arr[index]
        let tempIndex = index
        for (let subIndex = index + 1; subIndex < arr.length; subIndex++) {
          if (num > arr[subIndex]) {
            num = arr[subIndex]
            tempIndex = subIndex
          }
        }
        arr[tempIndex] = arr[index]
        arr[index] = num
      }
      console.log(arr)
    },
    // 插入排序
    insertSort () {
      var arr = [56, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 33423, 432]
      for (let index = 1; index < arr.length; index++) {
        let num = arr[index]
        for (let subIndex = index - 1; subIndex >= 0; subIndex--) {
          if (num >= arr[subIndex]) {
            if (index !== subIndex + 1) {
              // 删除元素
              arr.splice(index, 1)
              // 插入元素
              arr.splice(subIndex + 1, 0, num)
            }
            break
          }
        }
      }
      console.log(arr)
    },
    // 冒泡排序
    bubblingSort () {
      var arr = [1, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 432]
      // index必须设置为1,否则有越界的情况
      for (let index = 1; index < arr.length; index++) {
        for (let subIndex = 0; subIndex < arr.length - index; subIndex++) {
          let subNum = arr[subIndex]
          if (subNum > arr[subIndex + 1]) {
            arr[subIndex] = arr[subIndex + 1]
            arr[subIndex + 1] = subNum
          }
        }
      }
      console.log(arr)
    },
    // 快速排序,使用递归
    quickSort (arr, left, right) {
    //   console.log(arr)
    //   console.log(left + '/' + right)
      // 定义i和j的原因是下面需要使用这两个值确定下一个分组的递归左右边界
      let i = left
      let j = right
      // 不能使用0,因为arr永远是完整的数组,但是left是一直变的
      let key = arr[i]
      // 排序结束
      if (left >= right) {
        return
      }
      while (i < j) {
        // 当i<j,关键值小于从后面数的出现比key值小的数之前一直自减
        while (i < j && arr[j] >= key) {
          j--
        }
        // 这个时候key值是最小的,证明结束了
        if (i === j) {
          break
        }
        // 这里需要了解一下i++和++i是不一样滴
        arr[i++] = arr[j]
        while (i < j && arr[i] <= key) {
          i++
        }
        // 这个时候key值是最大的,证明结束了
        if (i === j) {
          break
        }
        // 这里需要了解一下j--和--j是不一样滴
        arr[j--] = arr[i]
      }
      arr[i] = key
      this.quickSort(arr, left, j - 1)
      this.quickSort(arr, j + 1, right)
    },
    // 斐波那契数列
    fibonacciSequence () {
      // 一个数是前两个数的和求第n个数是多少
      // 1,1,2,3,5,8,13,21,34
      var n = 3350
      // 上一个值
      var lastNum = 1
      // 当前值
      var w = 1
      // 第n个值
      var m = 0
      for (let index = 1; index <= n - 1; index++) {
        // m为第index+1个的值
        m = w
        // w为第index+2个的值
        w = w + lastNum
        // 重新为lastNum赋值
        lastNum = m
      }
      // 第n个的值,1000次耗费时间毫米级,时间复杂度O(n),可以使用矩阵计算更简单,但是不会
      console.log(m)
    }
    
  }
}
</script>

<style>
.bottom{
  width: 100%;
  height: 100px;
  background-color: aqua;
}
</style>

相关文章

  • java排序方法资料

    java排序,效率高的是哪种排序方法 JAVA快速排序(高效) java中常用的几种排序算法 相关代码: /* *...

  • 算法04-棋牌游戏常用排序算法

    算法04-棋牌游戏常用排序算法 一、介绍 棋牌游戏常用排序算法包括:链式基数排序、插入排序、希尔排序。 二、链式基...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • 常用的排序算法

    常用的排序算法 常用的排序算法插入排序折半插入排序shell 排序冒泡排序选择排序快速排序基数排序归并排序堆排序K...

  • Python 学习笔记 065

    常用相关排序方法 1.冒泡排序 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复...

  • 常用算法

    常用排序算法

  • 常见排序算法

    常用排序算法

  • 算法相关:常用排序

    排序:直接上代码

  • 全面介绍9种常用的排序算法

    本篇给大家介绍几种软件工程中常用的排序算法 所有排序算法的核心的代码都在《常用排序算法核心代码》[https://...

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

网友评论

      本文标题:算法相关:常用排序

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