All pastes #456255 Raw Edit

Untitled

public text v1 · immutable
#456255 ·published 2007-04-24 18:59 UTC
rendered paste body
    public static Skyline merge(Skyline skyline1, Skyline skyline2){
        int[] nCoords = new int[skyline1.coords.length + skyline2.coords.length];
        int i = 0; 
        int j = 0;
        for (int h = 0; h < nCoords.length; h += 2){
         // normaal kwam hier "nCoords[h+1] = 0;" - oneven = hoogtes - niet nodig om uit te voeren -> initialisatie waarde is altijd 0
            if (skyline1.coords[i] <= skyline2.coords[j]){
                nCoords[h] = skyline1.coords[i];
                if (!(i+2 >= skyline1.coords.length))
                    i += 2;
            } else {
                nCoords[h] = skyline2.coords[j];
                if (!(j+2 >= skyline2.coords.length))
                    j += 2;
            }
        }
        i = 0; j = 0;
        for (int k = 1; k < nCoords.length-1; k += 2){
            if (nCoords[i] <= skyline2.coords[j]){
                nCoords[k] = skyline1.coords[i];
                if (!(i+2 >= skyline1.coords.length))
                    i += 2;
            } else {
                nCoords[k] = skyline2.coords[j];
                if (!(j+2 >= skyline2.coords.length))
                    j += 2;
            }        
        }
        return verwijderDubbels(nCoords); // maak een nieuwe skyline aan met deze coordinaten en geef ze terug
    }
    
    private static Skyline verwijderDubbels(int[] nCoords){
        int h = 0;
        for (int i = 0; i < nCoords.length-2; i++){
            if (nCoords[i] == nCoords[i+2]){
                nCoords[i+1] = -1;
                nCoords[i+2] = -1;
                h += 2;
            }
        }
        int[] fCoords = new int[nCoords.length];//-h];
        for (int j = 0; j < nCoords.length; j++){
            if (nCoords[j] != -1){
                fCoords[j] = nCoords[j];
            }
        }
        return new Skyline(fCoords);
    }