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