Чтобы ответить полностью, мне нужно посмотреть, как вы справляетесь с вашим методом рисования. Помните, что он является основным в вашей заявке. Это означает, что он не изменится при вызове методов при отрисовке l oop, а только выдаст вам результаты всего в конце отрисовки и обновит экран этим.
Если вы вызываете doMergeSort () в методе draw вы всегда будете рисовать отсортированный массив.
Вам нужно будет найти какой-нибудь способ разбить алгоритм сортировки слиянием, чтобы каждый шаг увеличивался на al oop через draw. Обычно для этого требуется «сломать» алгоритм каким-то образом с целью его демонстрации.
Вот очень простой пример концепции, о которой я говорю:
Обратите внимание, как circleB не обновляется для каждая итерация UpdateCircleB () для l oop обновляется только после достижения конца Draw ().
let circleA = {
y : 200,
x : 30,
r : 50
}
let circleB = {
y : 300,
x : 30,
r : 50
}
function setup() {
createCanvas(400, 800);
}
function draw() {
//Increment Purple circle using draw loop
//Every time we draw a frame, we move circle A 1 pixel to the right
circleA.x++;
//The green circle uses a for loop inside a method call to update
//Every time we draw a frame, we move circle B 50 pixels to the right
moveCircleB();
//draw purple circle
fill(152, 114, 132);
ellipse(circleA.x,circleA.y,circleA.r);
//draw green circle
fill(157, 191, 158);
ellipse(circleB.x,circleB.y,circleB.r);
}
function moveCircleB(){
for(var i = 0; i < 50; i++){
circleB.x++;
}
}
html, body {
margin: 0;
padding: 0;
}
canvas {
display: block;
}
<!DOCTYPE html>
<html lang="en">
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.10.2/p5.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.10.2/addons/p5.sound.min.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
<meta charset="utf-8" />
</head>
<body>
<script src="sketch.js"></script>
</body>
</html>