BFS java zla kolejnosc sprawdzania

0

Witam serdecznie mam do napisania w javie kod algorytmu bfs i napisalem go owszem przeszukuje te wierzchołki które jest w stanie tylko w nieodpowiedniej kolejności i nie do końca wiem dlaczego mogł by ktoś z wprawnym okiem sprawdzić warunki dodawania do kolejki;p z góry dziękuje na bazie macierzy sasiedztwa

 public void bfs(int start)
        {
           
            int[] kolejnoscOdw=new int[size];
            int licznikKol=0;
            boolean []czyOdwiedzony=new boolean[size];
            
            System.out.println("BFS");
            PriorityQueue kolejka=new PriorityQueue();   // kolejka z java doc
            kolejka.offer(start);            //pierwszy punkt do kolejki
           czyOdwiedzony[start]=true;
            
            while(kolejka.peek()!=null)
            {
                int a=(int)kolejka.poll();
                
                kolejnoscOdw[licznikKol]=a;
                licznikKol++;
                System.out.println(a);
                for(int i=0;i<size;i++)
                {
                    
                     if(a!=i&&czyOdwiedzony[i]!=true&&check(a,i)==true)
                        
                        
                            {
                                czyOdwiedzony[i]=true;
                                kolejka.offer(i);
                                
                            }
                        
                    //}
                }
            }
            //********************************************WYPISYWANIE************************
            for(int i=0;i<size;i++)
            {
                System.out.println("czy punkt: "+i+" zostal odwiedzony?: "+czyOdwiedzony[i]+",");
            }
            System.out.println("kolejnosc odwiedzania punktow: ");
             for(int i=0;i<size;i++)
            {
                System.out.print(kolejnoscOdw[i]+",");
            }
             
        } 
1

Kolejka której używasz sortuje elementy po ich naturalnym porządku, w tym przypadku w kolejności numerków. A ty chyba jednak chcesz w kolejności dodawania? Użyj jakiegoś Deque a nie PriorityQueue

0

Dzięki wielkie;p wszystko chasa jak trzeba;P za mało doświadczenia :p i przez takie g**no się 3 godz życia traci:p

1

Dlatego trzeba ROZUMIEĆ co się pisze i czego się używa ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1