CrimsonSky_gr Δημοσ. 5 Απριλίου 2016 Δημοσ. 5 Απριλίου 2016 Edit:Λοιποοον θα τα λεω με τη σειρα που τα βλεπωκαλο που σας απαγορευει τα public fields, σας προτρεπει να μαθετε encapsulationδεν βλεπω να παρατηρησε κανεις οτι η κλαση πρεπει να ειναι abstractδεν ξεκιναμε με κεφαλαιο τις μεταβλητες, και για λογους λογικης μην ονομαζεις τον int array σου λιστα..-List->array-Ορισε μια νεα μεταβλητη numOfItems και το top(next θα το ελεγα εγω) για να υπαρχει πληρης πληροφορια σχετικα με την κλαση-Σβησε το getCapacity και κανε το getNumofItems για την merge,και νομιζω εννοιολογικα αρκει να ειναι package αντι για public, αλλιως χαλαει το encapsulation-Αφηνουμε την insert προς το παρον-Το getMax πλεον γραφεται πολυ πιο κατανοητα int getMax(){ if(numOfItems==0) return -1; else return array[0]; } -Το extractMax παει ολο σβησιμο int extractMax(){ if(numOfItems==0) return -1; else{ int result=array[0]; array[0]=0; numOfItems--; int index=0; for(int i=1;i<capacity;i++){ if(array[i]>array[index]) index=i; } array[0]=array[index]; array[index]=0; return result; } } -Στο merge εχεις λαθος κατανοησης δεν ειναι το κριτηριο τα capacity αλλα τα numOfItemsΑμα σου δωσω 2 ουρες που χωρανε 100 στοιχεια αλλα εχουν μεσα 5 η καθεμια δεν θα μου τις ενωσει αυτο που εγραψες bool merge(PriorityQueue B ){ if(numOfItems+B.getNumOfItems()>capacity) return false; else{.... .... .... } -Ε στο toString ελεος υπαρχει ετοιμη συναρτησηArrays.toString αυτα μετα βαρεθηκα
M2000 Δημοσ. 5 Απριλίου 2016 Δημοσ. 5 Απριλίου 2016 OFF TOPIC Ωραίο θέμα...έφτιαξα βέβαια την δική μου Site: PriorityQueue Ο αλγόριθμος όμως πήγε όπως τον σκέφτηκα και το παρουσίασα πιο πριν.
Moderators Kercyn Δημοσ. 5 Απριλίου 2016 Moderators Δημοσ. 5 Απριλίου 2016 Ωραίο θέμα...έφτιαξα βέβαια την δική μου Site: PriorityQueue Κι εγώ. http://ideone.com/5RDE1K 2
M2000 Δημοσ. 5 Απριλίου 2016 Δημοσ. 5 Απριλίου 2016 Ρε συ όχι έτοιμο...αλλά χειροτεχνία, master piece...
Moderators Kercyn Δημοσ. 5 Απριλίου 2016 Moderators Δημοσ. 5 Απριλίου 2016 Να ρωτήσω κάτι βρε παιδιά γιατί μάλλον κάτι μου διαφεύγει. Ζητάει ένα priority queue, το οποίο πρέπει να είναι πάντα sorted. Πώς γίνεται αυτό σε σταθερό χρόνο ανεξάρτητα από το μέγεθος της ουράς; Ας πούμε δηλαδή ότι θέλουμε το μεγαλύτερο στοιχείο να είναι πάντα πρώτο. Σε περίπτωση που αυτό που θέλουμε να βάλουμε δεν είναι το μεγαλύτερο, δεν πρέπει να δούμε και η υπόλοιπη ουρά τι έχει; @M2000 Αυτό που έχεις γράψει στο blog σου είναι λάθος. Ένα priority queue είναι, by definition, ταξινομημένο.
M2000 Δημοσ. 6 Απριλίου 2016 Δημοσ. 6 Απριλίου 2016 Δεν είναι SORTED...ποιος το είπε; (έχω περιγράψει τον αλγόριθμο...αλλά βλέπω...αγρόν αγοράζουμε) Όχι δεν είναι και απόδειξη για αυτό είναι ότι όταν σου δίνουν iterator σου λένε ότι δεν θα πάρεις σε σειρά τα μέρη της!
Moderators Kercyn Δημοσ. 6 Απριλίου 2016 Moderators Δημοσ. 6 Απριλίου 2016 Όχι δεν είναι και απόδειξη για αυτό είναι ότι όταν σου δίνουν iterator σου λένε ότι δεν θα πάρεις σε σειρά τα μέρη της! ???
defacer Δημοσ. 6 Απριλίου 2016 Δημοσ. 6 Απριλίου 2016 Να ρωτήσω κάτι βρε παιδιά γιατί μάλλον κάτι μου διαφεύγει. Ζητάει ένα priority queue Ζητάει ένα class βαφτίζεται ο δούλος του θεού pq. Βασικά δες το μόνο σα θέμα public interface, όχι αλγοριθμικό.
M2000 Δημοσ. 6 Απριλίου 2016 Δημοσ. 6 Απριλίου 2016 ??? Όπως διαβάζουμε (για την java) The Iterator provided in method iterator() is not guaranteed to traverse the elements of the PriorityQueue in any particular order. If you need ordered traversal, consider using Arrays.sort(pq.toArray()).
M2000 Δημοσ. 6 Απριλίου 2016 Δημοσ. 6 Απριλίου 2016 Δεν κατάλαβα; Έχεις θέμα; Χαλάμε το περιβάλλον; Δεν είναι του γούστου σου η συζήτηση; http://docs.oracle.com/javase/1.5.0/docs/api/java/util/PriorityQueue.html
defacer Δημοσ. 6 Απριλίου 2016 Δημοσ. 6 Απριλίου 2016 Όχι προς θεού μην ενοχλείστε, είναι διασκεδαστικό. 1
Moderators Kercyn Δημοσ. 6 Απριλίου 2016 Moderators Δημοσ. 6 Απριλίου 2016 Αυτό που καταλαβαίνω από τα docs και διάφορα posts στο SO είναι ότι το pq στη Java, εσωτερικά, δεν είναι sorted. Όταν όμως πας να βγάλεις ένα στοιχείο, τότε αυτό είναι το σωστό, βάσει sorting, στοιχείο. Δηλαδή δεν έχει μόνο το μεγαλύτερο και μετά άμα το βγάλεις είναι όλα τα άλλα όπως να 'ναι. Άρα, for all intents and purposes, το pq είναι ένας sorted container, τουλάχιστον για το χρήστη. Και ντροπή σου που με βάζεις να ψάχνω docs της Java. 1
defacer Δημοσ. 6 Απριλίου 2016 Δημοσ. 6 Απριλίου 2016 Ρε φυσικά και είναι sorted to pq, αφού το λέει κιόλας ότι είναι backed από heap. Τι λόγο ύπαρξης θα είχε διαφορετικά; Απλά ο iterator δε δίνει τα περιεχόμενα κατα σειρά, γιατί η δομή του heap δεν επιτρέπει να το κάνεις αυτό χωρίς overhead και χωρίς να καταστρέψεις το heap. Obvious choice there. Edit: προς αποφυγή παρανόησης. "Sorted" ναι, δεν είναι με την έννοια του sorted πίνακα. Αλλά αν δε σε πειράζει να καταστρέψεις το heap, μπορείς να πάρεις τα περιεχόμενα in order.
bnvdarklord Δημοσ. 6 Απριλίου 2016 Δημοσ. 6 Απριλίου 2016 καλο που σας απαγορευει τα public fields, σας προτρεπει να μαθετε encapsulation επίσης προτρέπει κακές τακτικές προγραμματισμού η ολική απαγόρευση public.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα