reklama

Začátky v Javě

Jakub Galgonek

Re:Začátky v Javě
« Odpověď #180 kdy: 03. 04. 2014, 15:03:21 »
mne sa to po tej uprave java kodu zacykli :-)

Filipovi tam vypadla ta část s invalid polem. Mělo by to být asi nějak takto:

Kód: [Vybrat]
import java.util.Random;

public class Dijkstra
{
    public static int compute(final int count, int start, int stop, final int weight[])
    {
        boolean[] invalid = new boolean[count];
        int distance[] = new int[count];
       
        for(int i = 0; i < count; i++)
            distance[i] = Integer.MAX_VALUE;
       
        int u = start;
        distance[u] = 0;
       
        while(u != stop)
        {
            invalid[u] = true;
           
            int minDistance = distance[u];
            int min = Integer.MAX_VALUE;
            int next = -1;
           
            for(int v = 0; v < count; v++)
            {
                if(invalid[v])
                    continue;
               
                int distanceThroughU = minDistance + weight[u * count + v];
               
                if(distanceThroughU < distance[v])
                    distance[v] = distanceThroughU;
               
                if(distance[v] < min)
                {
                    next = v;
                    min = distance[v];
                }
            }
           
            u = next;
        }
       
        return distance[u];
    }
   
   
    public static void main(String[] args)
    {
        long time = System.currentTimeMillis();
       
        final int count = 5000;
        final Random rand = new Random();
       
       
        int weight[] = new int[count * count];
       
        for(int i = 0; i < count * count; i++)
            weight[i] = rand.nextInt(100) + 1;
       
        int res = compute(count, 0, count - 1, weight);
       
        time = System.currentTimeMillis() - time;
        System.out.println("result: " + res);
        System.out.println("time  : " + time);
    }
}

reklama


YF

Re:Začátky v Javě
« Odpověď #181 kdy: 03. 04. 2014, 15:04:18 »
Da sa to este o malinko zrazit, pretoze vo for cykle sa po kazdej iteracii rata count * count

S tím by si měl optimalizátor snad poradit sám.

optimalizator to je takovej ten skritek v ty krabicce co se monuje vedle ukladatoru do pocitatoru? :)

 

reklama