Hallo Leute,
ich arbeite seit geraumer Zeit mit Processing von Ben Frey und Casey Reas.
Ich versuche nun mit dem Programm den Mergesort Algorithmus zu realisieren jedoch scheitere ich in der Hinsicht, dass ich Probleme mit Arrays habe.
Zunächst einmal mein Versuch den Mergesort Algorithmus zu schreiben :
Code:
void mergesort(int [] liste)
{
if(liste.length<=1){
return;
}else{
int [] left = new int[liste.length/2];
int [] right = new int[liste.length - left.length];
merge(left,right);
}
}
void merge(int [] left,int [] right){
int x=0;
int y=0;
int z=0;
while( x< left.length && y < right.length)
{
if(left[x] <= right[y])
{
list[z] = left[x];
x++;
}
else
{
left[z] = right[y];
y++;
}
z++;
}
for(int i=x; i< left.length;i++)
{
list[z] = left[i];
z++;
}
for(int j=y;j<right.length; i++)
{
list[z]=right[i];
z++;
}
}
Jop, ich gebs zu , ein sehr fehlerhafter Code, den ich aber noch bearbeiten kann.
Das Problem ist, dass ich diesen Quellcode in dieses Layout einbinden möchte:
Code:
int sy,sx,sy1;
int [] [] points;
void setup ()
{
size(400,400);
sy1=height;
sx=width;
sy=200;
points = new int [sx][sy];
for(int i =0; i < sx; i++) {
for(int j =199; j < sy; j++) {
points[(int)random(sx)][(int)j]=(int)random(10);
}
}
}
void draw() {
background (255);
for (int x = 0; x < sx; x=x+1) {
for (int y = 0; y < sy; y=y+1) {
if ((points[x][y] == 1) )
{
stroke(#682292);
line(x,y-60,x,y+60);
}
if ((points[x][y] == 2) )
{
stroke(#982828);
line(x,y-120,x,y+120);
}
if ((points[x][y] == 3) )
{
stroke(#292898);
line(x,y-30,x,y+30);
}
if ((points[x][y] == 4) )
{
stroke(#2AA044);
line(x,y-10,x,y+130);
}
if ((points[x][y] == 5) )
{
stroke(#DBC928);
line(x,y-160,x,y+160);
}
if ((points[x][y] == 6) )
{
stroke(#FF7048);
line(x,y-210,x,y+50);
}
if ((points[x][y] == 7) )
{
stroke(#48FFB1);
line(x,y-70,x,y+70);
}
if ((points[x][y] == 8) )
{
stroke(#000000);
line(x,y-180,x,y+180);
}
if ((points[x][y] == 9) )
{
stroke(#151515);
line(x,y-60,x,y+40);
}
if ((points[x][y] == 10) )
{
stroke(#383838);
line(x,y-120,x,y+30);
}
}
}
}
wie man sieht, sieht man sehr viele farbige Linien, die alles einen Index von 0-10 besitzen. Ich möchte nun mit den Mergesort Algorithmus die Linien nach den Indexes sortieren. Das Problem ist nun das einbinden des Algorithmus in das Layout. Unzwar ist im Layout ein Array mit 2 Ebenen gegeben (welche die x und y Koordinaten wiederspiegeln). Im algorithmus jedoch ist nur ein Array mit einer Ebene.
Nun die Preisfrage : wie muss ich das Array/Feld im Algorithmus so ändern, sodass es mit dem Layout kompatibel ist ?
Oder muss ich das Layout ändern und das 2 Ebenen Array in 1 Ebenen Array verändern ?
Ich hoffe es kann mir jemand helfen. Danke schon einmal im Vorraus.