mne sa to po tej uprave java kodu zacykli :-)
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); }}
Citace: r 03. 04. 2014, 13:41:30Da sa to este o malinko zrazit, pretoze vo for cykle sa po kazdej iteracii rata count * countS tím by si měl optimalizátor snad poradit sám.
Da sa to este o malinko zrazit, pretoze vo for cykle sa po kazdej iteracii rata count * count