冒泡排序详解

86 篇文章 0 订阅
67 篇文章 0 订阅

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

<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>

比较过程:

原数组:[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

第二轮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

第三轮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

第四轮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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值