• 冒泡排序详解


    冒泡排序:主要是将相邻的两个数进行比较,不管从大到小排还是从小到大排,思路都差不多。

    <script setup>
    import { ref, toRefs, onMounted, reactive, defineProps } from 'vue'
    onMounted(() => {
      handle()
    })
    const handle = () => {
      const arr = [10, 1, 5, 9, 7, 2, 4, 6]
      // 有八个数,要比较七轮,所以是长度减一
      // arr.length = 8
      for (let i = 0; i < arr.length - 1; i++) {
        // 再将每两个相邻的数进行比较大小
        // 排完一轮,然后再重新从第一个开始
        //j < arr.length - i:每过一轮i,就对比出一个数,所以可减少一些循环次数
        for (let j = 0; j < arr.length - i; j++) {
          // 如果前面的数大于后面的数。就交换位置
          if (arr[j] > arr[j + 1]) {
            //const [x, y] = [arr[j + 1], arr[j]]
            //arr[j] = x
            //arr[j + 1] = y
            //运用解构
            [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
          }
        }
      }
    }
    </script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    比较过程:

    原数组:[10, 1, 5, 9, 7, 2, 4, 6]。
    有8个数值,进行7轮比较即可,每一轮再将相近的两个数进行比较,每进行一轮就可得出一个数。
    j为n,就拿第n位和第n+1位进行比较,第n位的值>第n+1位的值,就交换位置,否则不换位置跳过此次循环,进行下一次循环比较

    第一轮i=0,j最大为6,将进行7轮比较,基础数组:[10, 1, 5, 9, 7, 2, 4, 6]

    j=0101比(基于[10, 1, 5, 9, 7, 2, 4, 6],第0位为10,第n+1位为1),交换位置,结果=[1, 10, 5, 9, 7, 2, 4, 6];
    j=1105比(基于[1, 10, 5, 9, 7, 2, 4, 6],第1位为10,第n+1位为5),交换位置[1, 5, 10, 9, 7, 2, 4, 6];
    j=2109比,交换位置[1, 5, 9, 10, 7, 2, 4, 6];
    j=3107比,交换位置[1, 5, 9, 7, 10, 2, 4, 6];
    j=4102比,交换位置[1, 5, 9, 7, 2, 10, 4, 6];
    j=5104比,交换位置[1, 5, 9, 7, 2, 4, 10, 6];
    j=6104比,交换位置[1, 5, 9, 7, 2, 4, 6, 10];
    得出最后一位数:10
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    第二轮i=1,j最大为5,将进行6轮比较,基础数组:[1, 5, 9, 7, 2, 4, 6, 10]

    j=015比,不换位置,结果=[1, 5, 9, 7, 2, 4, 6, 10];
    j=159比,不换位置,结果=[1, 5, 9, 7, 2, 4, 6, 10];
    j=297比,交换位置,结果=[1, 5, 7, 9, 2, 4, 6, 10];
    j=392比,交换位置,结果=[1, 5, 7, 2, 9, 4, 6, 10];
    j=494比,交换位置,结果=[1, 5, 7, 2, 4, 9, 6, 10];
    j=596比,交换位置,结果=[1, 5, 7, 2, 4, 6, 9, 10];
    得出倒数第二位:9
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    第三轮i=2,j最大为4,将进行5轮比较,基础数组:[1, 5, 7, 2, 4, 6, 9, 10]

    j=015比,不换位置,结果=[1, 5, 7, 2, 4, 6, 9, 10];
    j=157比,不换位置,结果=[1, 5, 7, 2, 4, 6, 9, 10];
    j=272比,交换位置,结果=[1, 5, 2, 7, 4, 6, 9, 10];
    j=374比,交换位置,结果=[1, 5, 2, 4, 7, 6, 9, 10];
    j=476比,交换位置,结果=[1, 5, 2, 4, 6, 7, 9, 10];
    得出倒数第三位:7
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    第四轮i=3,j最大为3,将进行4轮比较,基础数组:[1, 5, 2, 4, 6, 7, 9, 10]

    j=015比,不换位置,结果=[1, 5, 2, 4, 6, 7, 9, 10];
    j=152比,交换位置,结果=[1, 2, 5, 4, 6, 7, 9, 10];
    j=254比,交换位置,结果=[1, 2, 4, 5, 6, 7, 9, 10];
    j=356比,不换位置,结果=[1, 2, 4, 5, 6, 7, 9, 10];
    得出倒数第四位:6
    • 1
    • 2
    • 3
    • 4
    • 5

    由于第四轮就将结果比较出了,就省略了剩下的第五、六、七轮的比较过程,比较规则一样。

  • 相关阅读:
    文件管理命令
    RNN 浅析
    HM5080E带平衡功能、5V USB输入、8.4V/1.5A两节锂电池充电IC
    嵌入式开发中的滤波器设计
    对话四代女程序员:技术浪潮之下的“取与舍”|开谈
    2023 | github无法访问或速度慢的问题解决方案
    Vite3 + Svelte3构建Web应用报错:‘process is not defined‘
    Pandas-03(字符串与文本数据、索引和选择数据、统计函数、窗口函数)
    中国高压直流接触器行业发展动态与应用前景预测报告(2022-2028年)
    electron初学
  • 原文地址:https://blog.csdn.net/h_jQuery/article/details/127669434