当前位置:首页 > VUE

用vue实现冒泡排序

2026-02-25 05:58:32VUE

实现思路

在Vue中实现冒泡排序,可以通过数据驱动视图的特性动态展示排序过程。核心是将排序算法与Vue的响应式数据结合,通过修改数组触发视图更新。

代码实现

<template>
  <div>
    <button @click="startSort">开始排序</button>
    <div class="array-container">
      <div 
        v-for="(item, index) in array" 
        :key="index" 
        class="array-item" 
        :style="{ height: `${item * 10}px` }"
      >
        {{ item }}
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      array: [5, 3, 8, 4, 2],
      sorting: false
    }
  },
  methods: {
    async startSort() {
      if (this.sorting) return
      this.sorting = true

      let arr = [...this.array]
      const len = arr.length

      for (let i = 0; i < len - 1; i++) {
        for (let j = 0; j < len - 1 - i; j++) {
          if (arr[j] > arr[j + 1]) {
            // 交换元素
            ;[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
            // 更新Vue响应式数据
            this.array = [...arr]
            // 添加延迟以便观察排序过程
            await new Promise(resolve => setTimeout(resolve, 500))
          }
        }
      }

      this.sorting = false
    }
  }
}
</script>

<style>
.array-container {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  margin-top: 20px;
  height: 200px;
}

.array-item {
  width: 30px;
  background-color: #42b983;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  padding-bottom: 5px;
  color: white;
  transition: all 0.3s ease;
}
</style>

关键点说明

使用Vue的响应式特性,在每次数组元素交换后更新this.array,触发视图重新渲染

通过awaitsetTimeout实现排序动画效果,使每一步变化可见

用vue实现冒泡排序

使用解构赋值[a, b] = [b, a]简洁地实现元素交换

CSS样式使数组元素以柱状图形式展示,高度与数值成正比

用vue实现冒泡排序

优化方向

添加排序状态提示,防止重复点击

实现随机数组生成功能

增加排序速度调节选项

添加排序完成的事件通知

标签: vue
分享给朋友:

相关文章

vue 方法实现

vue 方法实现

在 Vue 中,方法的实现通常通过 methods 选项完成。以下是 Vue 方法实现的核心要点和示例: 基本方法定义 在 Vue 组件中定义方法时,需将函数声明放在 methods 对象内。这些方…

vue实现画图

vue实现画图

Vue 实现画图功能 在 Vue 中实现画图功能通常需要结合 HTML5 的 <canvas> 元素或第三方库。以下是几种常见的方法: 使用原生 Canvas API 通过 Vue 直接…

vue实现erp

vue实现erp

Vue实现ERP系统的关键步骤 技术选型与架构设计 采用Vue 3 + TypeScript构建前端,搭配Pinia状态管理,Element Plus或Ant Design Vue作为UI框架。后端可…

vue实现radio

vue实现radio

Vue 实现 Radio 按钮 在 Vue 中实现 Radio 按钮可以通过 v-model 进行数据绑定,结合 input 元素的 type="radio" 属性。以下是一个基本示例: <t…

vue底层实现

vue底层实现

Vue.js 的底层实现原理 Vue.js 是一个渐进式 JavaScript 框架,其核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是其关键实现细节: 响应式系统 Vue…

vue实现123456

vue实现123456

Vue 实现数字 123456 的显示 在 Vue 中显示数字 123456 非常简单,可以通过以下方法实现: 方法一:直接在模板中显示 <template> <div>…