提示信息

通过 HTML、CSS 和 JS 实现冒泡排序的示例

幻灭 已关注

当然!下面是一个简单的示例,展示如何使用 HTML、CSS 和 JavaScript 实现冒泡排序。这个示例包括一个简单的布局和按钮,用于演示数组的排序过程。

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Bubble Sort Visualization</title>
  7. <style>
  8. body {
  9. font-family: Arial, sans-serif;
  10. display: flex;
  11. flex-direction: column;
  12. align-items: center;
  13. margin: 0;
  14. padding: 50px;
  15. background-color: #f4f4f4;
  16. }
  17. #array {
  18. display: flex;
  19. margin-bottom: 20px;
  20. }
  21. .bar {
  22. width: 20px;
  23. margin: 0 2px;
  24. background-color: #3498db;
  25. text-align: center;
  26. color: white;
  27. }
  28. .bar.active {
  29. background-color: #e74c3c;
  30. }
  31. button {
  32. padding: 10px 20px;
  33. background-color: #2ecc71;
  34. color: white;
  35. border: none;
  36. cursor: pointer;
  37. margin-top: 20px;
  38. }
  39. button:disabled {
  40. background-color: #95a5a6;
  41. }
  42. </style>
  43. </head>
  44. <body>
  45. <div id="array"></div>
  46. <button id="sortBtn">Sort</button>
  47. <script>
  48. const array = [64, 34, 25, 12, 22, 11, 90];
  49. const arrayContainer = document.getElementById('array');
  50. const sortBtn = document.getElementById('sortBtn');
  51. function createBars() {
  52. arrayContainer.innerHTML = '';
  53. for (let i = 0; i < array.length; i++) {
  54. const bar = document.createElement('div');
  55. bar.style.height = `${array[i] * 3}px`;
  56. bar.classList.add('bar');
  57. bar.innerText = array[i];
  58. arrayContainer.appendChild(bar);
  59. }
  60. }
  61. async function bubbleSort() {
  62. let bars = document.querySelectorAll('.bar');
  63. for (let i = 0; i < bars.length - 1; i++) {
  64. for (let j = 0; j < bars.length - i - 1; j++) {
  65. bars[j].classList.add('active');
  66. bars[j + 1].classList.add('active');
  67. await new Promise(resolve =>
  68. setTimeout(() => {
  69. resolve();
  70. }, 500)
  71. );
  72. if (array[j] > array[j + 1]) {
  73. const temp = array[j];
  74. array[j] = array[j + 1];
  75. array[j + 1] = temp;
  76. bars[j].style.height = `${array[j] * 3}px`;
  77. bars[j + 1].style.height = `${array[j + 1] * 3}px`;
  78. bars[j].innerText = array[j];
  79. bars[j + 1].innerText = array[j + 1];
  80. }
  81. bars[j].classList.remove('active');
  82. bars[j + 1].classList.remove('active');
  83. }
  84. }
  85. sortBtn.disabled = false;
  86. }
  87. createBars();
  88. sortBtn.addEventListener('click', () => {
  89. sortBtn.disabled = true;
  90. bubbleSort();
  91. });
  92. </script>
  93. </body>
  94. </html>

说明

  • HTML:在 body 中包含一个用于展示数组元素的 div 和一个排序按钮。
  • CSS:样式使得数组元素呈现为垂直柱状条,active 类用于标记正在比较的元素。
  • JavaScript:实现了一个简单的冒泡排序算法。在 bubbleSort 函数中,使用 setTimeout 模拟动画效果。按钮点击后开始排序,排序完成后启用按钮。

将以上代码复制到一个 HTML 文件中并在浏览器中打开,即可看到冒泡排序的可视化效果。每次点击按钮都会对数组重新进行排序,并显示排序过程。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
幻灭 关注 已关注

最近一次登录:2024-11-20 22:22:41   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图