Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπέρα , θελω να υλοποιήσω τον παρακάτω δυαδικό αλγοριθμο και να διαβαζει το 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;
}

 

 

ευχαριστώ εκ των προτέρων

Δημοσ.

Πρώτα απ' όλα, να πω ότι είμαι πρωτοετής, και "τώρα" στο 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);
    }
}
  • Like 1
Δημοσ.

Φίλε σε ευχαριστώ πάρα πολύ, νασαι καλά. Οκ τον εκανα τον αλγόριθμο για την λειτουργία που ήθελα. Και πάλι ευχαριστώ

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...