diff --git a/Winda/src/winda/logic/AlgorytmGoraDol.java b/Winda/src/winda/logic/AlgorytmGoraDol.java index ae62d9a..85d3453 100644 --- a/Winda/src/winda/logic/AlgorytmGoraDol.java +++ b/Winda/src/winda/logic/AlgorytmGoraDol.java @@ -15,7 +15,7 @@ import sun.misc.Sort; public class AlgorytmGoraDol implements IAlgorytm { private int start_floor; private int floor_count; - private ArrayList floors; + private ArrayList floors; private List pasazerowie; private int acctual_floor; @@ -50,78 +50,51 @@ public class AlgorytmGoraDol implements IAlgorytm { return this.floor_count; } - private void sortUp(ArrayList array){ - Sort.quicksort(array.toArray(), null); - } - - private void goUp(int to){ + private void goUp(){ int i =0; - ArrayList tmp = new ArrayList(); + ArrayList pietra = this.setupPietra(); while(this.pasazerowie.get(i).GetStart() sortDown(ArrayList array){ - Sort.quicksort(array.toArray(), null); - ArrayList tmp = new ArrayList(); - for(int i= (array.size()-1);i>=0;i--) - tmp.add(array.get(i)); - return tmp; + this.clearPietra(pietra); + this.floors.addAll(pietra); } - private void goDown(int to){ + private void goDown(){ int i =0; - ArrayList tmp = new ArrayList(); + ArrayList pietra = this.setupPietra(); while(this.pasazerowie.get(i).GetStart()this.pasazerowie.get(i).GetStop()&& - this.pasazerowie.get(i).GetStart()>to){ - if(tmp.contains(this.pasazerowie.get(i).GetStart())) - tmp.add(this.pasazerowie.get(i).GetStart()); - if(tmp.contains(this.pasazerowie.get(i).GetStop())) - tmp.add(this.pasazerowie.get(i).GetStop()); + if( this.pasazerowie.get(i).GetStart()>this.pasazerowie.get(i).GetStop()){ + pietra.get(this.pasazerowie.get(i).GetStart()).pasazerowieWsiadający.add(this.pasazerowie.get(i)); + pietra.get(this.pasazerowie.get(i).GetStop()).pasazerowieWysiadajacy.add(this.pasazerowie.get(i)); } - tmp = this.sortDown(tmp); - this.floors.addAll(tmp); + this.clearPietra(pietra); + this.floors.addAll(pietra); + } + + private void clearPietra(ArrayList pietro){ + Pietro tmp; + for(int i=0;i setCourse(){ - this.floors = new ArrayList(); - floors.add(this.start_floor); - PasazerSort sort = new PasazerSort(pasazerowie); sort.sortByStart(); this.acctual_floor = this.start_floor; - /* Jeżeli winda jest poniżej połowy */ - if((this.floor_count/2)>this.acctual_floor){ - this.goDown(0); - this.goUp(this.floor_count); - this.goDown(this.start_floor); - } - else{ - this.goUp(0); - this.goDown(this.floor_count); - this.goUp(this.start_floor); - } - - - - int []ret = new int[floors.size()]; - for(int i=0;i Trasa(List pasazerowie) { @@ -132,4 +105,14 @@ public class AlgorytmGoraDol implements IAlgorytm { public void SetMaxPietro(int maxPietro) { this.setFloorCount(floor_count); } + + private ArrayList setupPietra(){ + ArrayList pietra = new ArrayList(); + for(int i=0;i