Processing 椭圆气泡排序
目标: 我想将随机生成的椭圆按其半径排序。从最小值->最大值 问题: 每次我运行时,都会发生一个错误<代码>数组索引超出边界 这是我的密码:Processing 椭圆气泡排序,processing,indexoutofboundsexception,bubble-sort,Processing,Indexoutofboundsexception,Bubble Sort,目标: 我想将随机生成的椭圆按其半径排序。从最小值->最大值 问题: 每次我运行时,都会发生一个错误数组索引超出边界 这是我的密码: Ellipse[] e = new Ellipse[100]; int j; void setup() { fullScreen(); for (int i = 0; i<e.length; i++) { e[i] = new Ellipse(random(10, width-10), height/2, random(10, 80), co
Ellipse[] e = new Ellipse[100];
int j;
void setup() {
fullScreen();
for (int i = 0; i<e.length; i++) {
e[i] = new Ellipse(random(10, width-10), height/2, random(10, 80), color(random(1, 255)));
}
}
void draw() {
background(255);
for (int i = 0; i<e.length; i++) {
e[i].show();
}
if (j<e.length) {
for (int i = 0; i<e.length-1; i++) {
float a = e[i].r;
float b = e[i+1].r;
if (a>b) {
swap( int(e[i].x), int(e[i+1].x));
}
}
}
j++;
}
void swap(int a, int b) {
float zwischen = e[a].x;
e[a].x = e[b].x;
e[b].x = zwischen;
}
class Ellipse {
float x, y, r;
color c;
Ellipse(float x_, float y_, float r_, color c_) {
x = x_;
y = y_;
r = r_;
c = c_;
}
void show() {
fill(c);
ellipse(x, y, r, r);
}
}
椭圆[]e=新椭圆[100];
int j;
无效设置(){
全屏();
对于(int i=0;i您想用索引i
交换元素,用索引i+1
交换元素。函数swap
交换2个元素。函数的参数是元素的索引。因此它必须是:
swap(int(e[i].x),int(e[i+1].x));
swap(i,i+1);
要使算法工作,列表中椭圆的索引必须与椭圆沿x轴的位置相对应。如果x轴和y轴是随机的,则椭圆将按其大小排序到随机位置。您可以选择如何按椭圆沿x轴的半径排序椭圆。
通过以随机半径递增x坐标创建椭圆:
for(int i=0;i您想用索引i
交换元素,用索引i+1
交换元素。函数swap
交换2个元素。函数的参数是元素的索引。因此它必须是:
swap(int(e[i].x),int(e[i+1].x));
swap(i,i+1);
要使算法工作,列表中椭圆的索引必须与椭圆沿x轴的位置相对应。如果x轴和y轴是随机的,则椭圆将按其大小排序到随机位置。您可以选择如何按椭圆沿x轴的半径排序椭圆。
通过以随机半径递增x坐标创建椭圆:
for(inti=0;iit不工作。只是随机切换位置。:Cits不工作。只是随机切换位置。:C