1 回答

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊
矩形的可視化和繪制是否正確?
這是基于意見(jiàn)的。但它確實(shí)有效,所以是的。該代碼結(jié)構(gòu)良好并遵循基本準(zhǔn)則。
如何為當(dāng)前正在比較的矩形著色?
fill()
在繪制矩形之前,您必須設(shè)置單獨(dú)的顏色。顏色由紅色、綠色和藍(lán)色通道組成。通道混合成最終顏色。如果所有 3 個(gè)通道具有相同的比例,則顏色為灰度顏色。(0, 0, 0) 為黑色,(255, 255, 255) 為白色。
例如,將比較的矩形著色為紅色,將所有其他矩形著色為灰色。比較的矩形具有索引i
和i-1
。
由于循環(huán)的控制變量for
也被命名為i
,因此必須更改(例如j
):
for (int j = 0; j < totalNum; j++) {
? ? // [...]
}
將索引i與控制變量進(jìn)行比較j。如果 j==i-1或j==i則設(shè)置紅色填充顏色 ( fill(255, 0, 0)),否則設(shè)置灰色 ( 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更改的時(shí)間。在調(diào)用prevNoOfComp之前,在變量中聲明先前的交換計(jì)數(shù)。bubbleSort如果交換計(jì)數(shù)發(fā)生變化,只需使用不同的顏色 ( 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 或任何本機(jī)庫(kù)在 java 中完成
要求我們推薦或查找書籍、工具、軟件庫(kù)、教程或其他場(chǎng)外資源的問(wèn)題對(duì)于 Stack Overflow 來(lái)說(shuō)是偏離主題的,因?yàn)樗鼈兺鶗?huì)吸引固執(zhí)己見(jiàn)的答案和垃圾郵件。相反,請(qǐng)描述問(wèn)題以及迄今為止為解決問(wèn)題所采取的措施。
添加回答
舉報(bào)