繁体   English   中英

我正在尝试创建一个冒泡排序可视化,但我遇到了一个关于如何以一对一的方式制作动画的问题

I am trying to create a bubble sort visualization but I ran into a probem on how do to animate in a one-by-one fashion

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

问题:我正在尝试创建一个冒泡排序可视化,但是当页面重新加载时它会自动对整个事物进行排序。 我正在寻找输入以使其变慢。 这是我的代码:

let a = [];
let i = 0;
let j = 0;

function setup() {
  createCanvas(640, 640);
  a = new Array(width);
  for (let i = 0; i < a.length; i++) {
    a[i] = random(height);
  }
}

function draw() {
  background(0);
  for (let i = 0; i < a.length; i++) {
    line(i, height, i, height - a[i]);
    stroke(255);
  }
  if (i < a.length) {
    sort(a, i, j);
    i++;
  }
}

function sort(a, i, j) {
  for (i = 0; i < a.length; i++) {
    for (j = 0; i < a.length + 1; j++) {
      if (a[i] < a[j]) {
        let f = a[i];
        a[i] = a[j];
        a[j] = f;
      }
    }
  }
}
1 个回复

您的代码非常接近,但有几个问题。

  1. 重命名您的排序方法,使其不会与 p5js 排序冲突
  2. 在您的排序方法中,不要对整个数组进行排序

这是您的代码,其中包含两项改进

 let a = []; let i = 0; let j = 0; function setup() { createCanvas(640, 640); a = new Array(width); for (let i = 0; i < a.length; i++) { a[i] = random(height); } // adjust the frame rate to slow things down even more frameRate(30); } function draw() { background(0);// black background for (let k = 0; k < a.length; k++) { line(k, height, k, height - a[k]); stroke(255);// white bars } if (j < a.length){ for (i = 0; i < a.length; i++) { mySort(a, i, j); } j++; } else { noLoop(); } } function mySort(a, i, j) { if (a[i] < a[j]) { let f = a[i]; a[i] = a[j]; a[j] = f; } }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.8.0/p5.min.js"></script>

1 如何在Fashion MNIST数据集中一一绘制项目?

我正在编写一个脚本来绘制与图像集相对应的标签中的前5个项目。 服装套装对每个团队的名称进行分类。 我画了但是,我没有将输出分类。 第一行输出应仅是T恤/上衣的前5项,第二行应是裤子等的前5项。 ...

2 我正在尝试从用户获取数组后实现冒泡排序可视化

我正在尝试在 DOM 中从用户那里获取数组后实现冒泡排序可视化。我使用 setTimeout 来延迟循环但它不起作用,循环执行速度很快,并且在使用 setTimeout 时跳过了一些迭代。它在没有 setTimeout 的情况下工作正常.我想减慢排序速度,以便人们可以想象。 var ...

3 如何在Perl中创建冒泡排序

我正在尝试在Perl中创建一个简单的冒泡排序,但它似乎不起作用。 谁能帮我? 码: 然后,当我再次遍历数组时,它不会被排序。 ...

4 如何动画/绘制合并排序可视化?

我想为我的排序可视化器制作合并排序算法的动画,但问题是,与其他一些算法不同,合并排序是递归的,因此您通过传递原始数组的一段,不断地从 function 中调用 function。 当我尝试绘制它时出现问题,因为我无法绘制较小的arrays,但我必须不断更新原始数组。 我对该怎么做感到困惑,因为要绘 ...

5 我需要一一安装依赖吗? (如果是这样,为什么?)

我正在将节点/ Express应用程序移植到Heroku,并且它一直崩溃。 日志首先说:“错误:找不到模块'猫鼬'”,然后我(重新)安装了猫鼬。 然后,它崩溃与“错误:找不到模块'时刻'” 我的应用程式require猫鼬,片刻等。 是不是npm install本身应该采取的依赖关系的 ...

7 如何将两个名字列表一一合并? [重复]

这个问题已经在这里有了答案: 如何并行遍历两个列表? 4个答案 我有两个长度相同的名称列表,我只想将它们组合成第三个列表,以便将每个列表中的第一个值组合在一起,然后组合第二个,依此类推。 我知道我缺少一些显而易见的东西。 我尝试使用“ +”,但不适用于两个 ...

10 如何以不同方式实现此冒泡排序?

我正在寻求实施冒泡排序。 我有以下代码,它在do循环中使用for循环。 如何将其转换为使用两个for循环的冒泡排序? 这是我的代码: (这是标记的作业,但这是为期末考试而不是实际的家庭作业。) ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM