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 來說是偏離主題的,因為它們往往會吸引固執己見的答案和垃圾郵件。相反,請描述問題以及迄今為止為解決問題所采取的措施。
添加回答
舉報