首先,這次老師已經先寫出了一套程式碼了,以下是完整程式碼......
int []a=new int[10];//Java's Array
//int []a={6,3,5,9,1,0,4,2,7,8};
//int []a={1,2,3,5,0,4,6,7,8,9};
//int []a={9,8,7,6,5,4,3,2,1,0};
void setup(){
size(500,800);
for(int i=0;i<10;i++){//random choose number
a[i]=int(random(10));//亂數決定數字
}
textSize(36);
textAlign(LEFT,TOP);
showArray(y);
}
int y=0;
void showArray(int y){
for(int i=0;i<10;i++){
fill(255); rect(i*50, y, 50,50);
fill(0); text(a[i], i*50, y);
}
}
void draw(){
}
void mousePressed(){
for(int i=0; i<10-1;i++){
if(a[i] > a[i+1]){
int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
fill(255,0,0,128); rect(i*50, y, 100,50);
}
}
y+=50;
showArray(y);
}
好了,我們來慢慢分析一下程式碼的用法吧!
首先是「a[i]=int(random(10));」,radom()是用來產生亂數的功能詞;(random(10)代表從0~9隨機數字;int()則是用以將亂數侷限於整數。
接著是 「 textAlign(LEFT,TOP);」,以往我們的字元產生是單純地印出文字,但單純地印出會造成文字歪掉,因為印出文字的默認方式為左下角像右上角印,導致文字與方格錯位。所以textAlign()可以用來決定印出起始位置,這樣就能控制文字了。
接著是「fill(255,0,0,128)」,嗯?你說這裡有啥好說,不是只是填紅色嗎?不不不不不,沒這麼簡單唷~~看看RGB之後的那個「128」,這是alpha,簡寫a,代表的是顏色的透明度,最大255,數值越低越透明。
當然,這次的重點是這一段:
for(int i=0; i<10-1;i++){
if(a[i] > a[i+1]){
int temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
這一段就是BUBBLE SORT的重點了,我們設定了一個變數「temp」,它是用來作為中間介質用的,是為了避免改變原陣列中的值。 只要用這串程式碼就能達到BUBBLE SORT的效果了唷~~
好啦,關於BUBBLE SORT的部分就先到這裡吧,接著來完成上禮拜的遊戲吧~~
沒有留言:
張貼留言