Правильно ли отображаются и рисуются прямоугольники?
Это основано на мнении. Но это работает, так что да, это так. Код хорошо структурирован и соответствует основным правилам.
Как мне покрасить прямоугольники, которые сравниваются в настоящее время?
Йов нужно установитьиндивидуальный цвет на fill()
до рисования прямоугольников. Цвет состоит из красного, зеленого и синего канала. Каналы смешиваются до окончательного цвета. Если все 3 канала имеют одинаковую шкалу, то цвет будет серым. (0, 0, 0) - черный, а (255, 255, 255) - белый.
Например, раскрасьте прямоугольники, которые сравниваются, в красный, а все остальные в серый. Сравниваемые прямоугольники имеют индексы i
и i-1
.
Поскольку управляющие переменные цикла for
также называются i
, это необходимо изменить (например, j
):
for (int j = 0; j < totalNum; j++) {
// [...]
}
Сравните индекс i
с управляющей переменной j
. Если j==i-1
или j==i
, задайте красный цвет заливки (fill(255, 0, 0)
), в противном случае серый цвет (fill(127)
):
for (int j = 0; j < totalNum; j++) {
stroke(220);
if (j==i-1 || j==i) {
fill(255, 0, 0);
} else {
fill(127);
}
rect(rectPos, height - values[j], width / totalNum, values[j]);
rectPos += width / totalNum;
}
Если вы просто хотите покрасить «поменяемые» прямоугольники, вы должны определить, когда noOfComp
изменился. Укажите предыдущий счет подкачки в переменной prevNoOfComp
перед вызовом bubbleSort
. Просто используйте другой цвет, если количество свопов изменилось (if (noOfComp != prevNoOfComp && (j==i-1 || j==i))
):
int noOfComp = 0;
int prevNoOfComp = 0;
void draw() {
float rectPos = 0;
frameRate(10);
background(255);
for (int j = 0; j < totalNum; j++) {
stroke(220);
if (noOfComp != prevNoOfComp && (j==i-1 || j==i)) {
fill(255, 0, 0);
} else {
fill(127);
}
rect(rectPos, height - values[j], width / totalNum, values[j]);
rectPos += width / totalNum;
}
textSize(12);
text("No. Of Comparisons: ", 15, 40);
text(noOfComp, 80, 60);
prevNoOfComp = noOfComp;
bubbleSort();
}
[.. .] может быть сделано в java с использованием Swing или любых собственных библиотек
Вопросы, задающие нам вопрос , порекомендуйте или найдите книгу, инструмент, библиотеку программного обеспечения, учебное пособие или другой сторонний ресурс являются не по теме переполнения стека, поскольку они, как правило, привлекают взвешенные ответы и спам. Вместо этого опишите проблему и то, что уже сделано для ее решения.