اذهب إلى المحتوى
  • 0

خطأ في binary search بلغة جافا

احمد صوالحة

السؤال

يحدث الخطأ " not a statement " أثناء إستدعاء الدالة التالية:

public boolean binarySearch(int[] list, int target, int low, int high) {
        list ={"1,2,5,7,9,15"}; 
        target = 5;
        boolean result = binarySearch(list, target, 0, list.length-1);
        executions++;
        int mid = (low + high) / 2;
        if(!result){
            System.out.println("Target not found -- bad search.");
        }else{
            System.out.println("Target found -- sucessful search!");
        }    
        if (list[mid] == target) {
            return true;
        } else {
            if (low > high) {
                return false;
            } else {
                comparisons++;
                if (list[mid] < target) {
                    return binarySearch(list, target, mid + 1, high);
                } else {
                    return binarySearch(list, target, low, mid - 1);
                }
            }

لم أفهم ماذا تعني رسالة الخطأ ؟ وما هو الحل ؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

إن list هي مصفوفة أعداد من النوع int أي يجب أن تكتب الأعداد بدون " اقتباس ويفصل بينها فواصل.

int[] list ={1,2,5,7,9,15}; 

ويوجد أخطا في طريقة كتابة تابع البحث الثنائي حيث يجب أن تكون بالطريقة التالية:

import java.util.*;
import java.lang.*;
import java.io.*;
 
class Main {
	public static int executions = 0, comparisons = 0;
 
    public static void main(String[] args) throws java.lang.Exception {
        int[] list = {1,2,5,7,9,15};
        int target = 5;
 
 
        boolean result = binarySearch(list, target, 0, list.length - 1);
 
        if (!result) {
            System.out.println("Target not found -- bad search.");
        } else {
            System.out.println("Target found -- sucessful search!");
 
            System.out.println("executions: " + executions);
            System.out.println("comparisons: " + comparisons);
 
        }
    }
 
 
    public static boolean binarySearch(int[] list, int target, int low, int high) {
 
        executions++;
        int mid = (low + high) / 2;
 
        if (list[mid] == target) {
            return true;
        } else {
            if (low > high) {
                return false;
            } else {
                comparisons++;
                if (list[mid] < target) {
                    return binarySearch(list, target, mid + 1, high);
                } else {
                    return binarySearch(list, target, low, mid - 1);
                }
            }
        }
    }
}

وسيكون الخرج:

Target found -- sucessful search!
executions: 1
comparisons: 0

أي سيجد القيمة 5 من أول محاولة

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الخطأ not a statement يعني أن التعبير الذي كتبه غير ذو معنى ولا يسمح به ويحدث لأسباب متعددة منها مثلاً ان تقوم بكتابة 

0;

او

a+b;

او حتى ان تستدعي دالة بدون كتابة الأقواس 

any;

اما في حالتك فأظن أن لديك مشكلة في السطر الأول في عملية اسناد القيم للمصفوفة لابد أن تكون كالتالي:

list [0] = {"اكتب القيم"};

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...