1 回答
TA贡献1943条经验 获得超7个赞
矩形的可视化和绘制是否正确?
这是基于意见的。但它确实有效,所以是的。该代码结构良好并遵循基本准则。
如何为当前正在比较的矩形着色?
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();
}
[...] 可以使用 Swing 或任何本机库在 java 中完成
要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所采取的措施。
添加回答
举报