当前位置:首页 » 《关于电脑》 » 正文

用html、css和js来实现冒泡排序

26 人参与  2024年10月23日 12:40  分类 : 《关于电脑》  评论

点击全文阅读


效果图如下

代码如下

<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>冒泡排序动画</title><style>        body {            display: flex;            flex-direction: column;            justify-content: center;            align-items: center;            background-color: #1c1c1c;            color: white;            font-family: Arial, sans-serif;            height: 100vh;            margin: 0;        }        h1 {            margin-bottom: 100px;        }        .container {            display: flex;            justify-content: center;            align-items: center;            gap: 20px;        }        .ball {            width: 70px;            height: 70px;            background-color: black;            border-radius: 50%;            display: flex;            justify-content: center;            align-items: center;            color: white;            font-size: 18px;            transition: transform 1.5s ease, box-shadow 1.5s ease;        }        .comparing {            box-shadow: 0px 0px 20px 5px yellow;            transform: translateY(-20px); /* Move upward */        }        .swapping {            box-shadow: 0px 0px 20px 5px red;            transform: translateY(20px); /* Move downward for swap effect */        }        .sorted {            background-color: green;        }        .description {            margin-top: 60px;            font-size: 25px;            color:yellow;        }    </style><h1>冒泡排序动画</h1><div class="container" id="balls-container"></div><div class="description" id="description">Starting Bubble Sort...</div><script>    const array = [5, 3, 8, 4, 2, 6];  // Initial array    const container = document.getElementById("balls-container");    const description = document.getElementById("description");    // Function to create the circular balls representing the array    function createBalls() {        container.innerHTML = '';        array.forEach((value, index) => {            const ball = document.createElement("div");            ball.classList.add("ball");            ball.textContent = value;            ball.setAttribute("id", `ball-${index}`);            container.appendChild(ball);        });    }    // Function to swap elements in the DOM    function swapElements(idx1, idx2) {        const ball1 = document.getElementById(`ball-${idx1}`);        const ball2 = document.getElementById(`ball-${idx2}`);        const tempText = ball1.textContent;        ball1.textContent = ball2.textContent;        ball2.textContent = tempText;    }    // Bubble Sort Algorithm with Animation    async function bubbleSort() {        let n = array.length;        for (let i = 0; i < n; i++) {            for (let j = 0; j < n - i - 1; j++) {                // Highlight comparing elements                const ball1 = document.getElementById(`ball-${j}`);                const ball2 = document.getElementById(`ball-${j + 1}`);                ball1.classList.add("comparing");                ball2.classList.add("comparing");                description.textContent = `比较: ${array[j]} 和 ${array[j + 1]}`;                await new Promise(resolve => setTimeout(resolve, 3000));  // Slower animation                // Compare and swap if necessary                if (array[j] > array[j + 1]) {                    description.textContent = `交换: ${array[j]} 和 ${array[j + 1]}`;                    [array[j], array[j + 1]] = [array[j + 1], array[j]];                    swapElements(j, j + 1);                    ball1.classList.add("swapping");                    ball2.classList.add("swapping");                    await new Promise(resolve => setTimeout(resolve, 2000));                }                // Remove comparison and swapping highlights                ball1.classList.remove("comparing", "swapping");                ball2.classList.remove("comparing", "swapping");            }            // Mark the last sorted element            document.getElementById(`ball-${n - i - 1}`).classList.add("sorted");        }        description.textContent = "Array is sorted!";    }    // Initialize and start the animation    createBalls();    bubbleSort();</script>


点击全文阅读


本文链接:http://zhangshiyu.com/post/176115.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1