george1703 Δημοσ. 5 Μαΐου 2016 Δημοσ. 5 Μαΐου 2016 καλησπέρα , θελω να υλοποιήσω τον παρακάτω δυαδικό αλγοριθμο και να διαβαζει το size απο τον πληκτρολόγιο και να γεμίζει τον πίνακα με 1 και 0, οταν παω να το κάνω αυτό με for , με βγαζει λαθος,....οποιος μπορει ας βοηθησει.....ο αλγοριθμος ειναι ο παρακατω int[] data; int size; for (int i = 0; i < size; i++) Scanner data[ ]=sc.nextInt(); public boolean binarySearch(int key) { int low = 0; int high = size - 1; while(high >= low) { int middle = (low + high) / 2; if(data[middle] == key) { return true; } if(data[middle] < key) { low = middle + 1; } if(data[middle] > key) { high = middle - 1; } } return false; } ευχαριστώ εκ των προτέρων
stavrosyomafias Δημοσ. 6 Μαΐου 2016 Δημοσ. 6 Μαΐου 2016 Πρώτα απ' όλα, να πω ότι είμαι πρωτοετής, και "τώρα" στο 2ο εξάμηνο ξεκινήσαμε Java. Δομές δεχόμενων κάνουμε σε C, αλλά δεν έχουμε υλοποιήσει ακόμα πρακτικά(εργαστηριακά) δυαδική αναζήτηση, so take it easy on me please. Λοιπόν, όσο για τον κώδικα, αν κατάλαβα καλά κάτι τέτοιο θες? η κλάση που υλοποιεί την δυαδική αναζήτηση import java.util.Scanner; public class Class2 { public boolean binarySearch(int key) { int size; Scanner sc = new Scanner(System.in); System.out.println("Dwse mou to size."); size = sc.nextInt(); int[] data = new int[size]; for (int i = 0; i < size; i++) { data[i] = i; //Στην παραπάνω γραμμή δεν είμαι σίγουρος για το αν ζητάς αυτό. } int low = 0; int high = size-1; while(high >= low) { int middle = (low + high)/2; if(data[middle] == key) { return true; } if(data[middle] < key) { low = middle+1; } if(data[middle] > key) { high = middle-1; } } return false; } } η κύρια συνάρτηση, με τυχαία τιμή δοκιμής το 7 public class Class1 { public static void main(String[] args) { Class2 bs = new Class2(); boolean bp = bs.binarySearch(7); System.out.println(bp); } } 1
george1703 Δημοσ. 6 Μαΐου 2016 Μέλος Δημοσ. 6 Μαΐου 2016 Φίλε σε ευχαριστώ πάρα πολύ, νασαι καλά. Οκ τον εκανα τον αλγόριθμο για την λειτουργία που ήθελα. Και πάλι ευχαριστώ 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα