PDA

View Full Version : binarysearch



mf_arian
جمعه 16 بهمن 1388, 20:51 عصر
package binarysearch;
import java.util.Scanner;
public class Main {


public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int []a = new int [8];
int low=0;
int high=7;

for(int i=0 ; i<a.length ; i++)
{
System.out.printf("\r\nPlease enter a number :",a[i]);
a[i] = input.nextInt();
}

System.out.printf("\r\nPlease enter an integer :");
int key = input.nextInt();

// System.out.printf("\r\nIt is in place "(binarysearch(numbers , low ,high ,key)");

public Static int binarysearch(int[]numbers,int key,int low , int high){

if(low>high)
{
return -1;
}
int mid = (low + high)/2 ;
if(numbers [mid] == key){
return mid;

if(key < numbers[mid])
{
return binarysearch(numbers , low , mid-1 , key);
} else{
return binarysearch(numbers , mid+1,high , key);

}

}
System.out.printf("\r\nIt is in place "(binarysearch(numbers , low ,high ,key)");
}

}




مشکل توی:public static int binarysearch()
من نمی دونم باید چی کار کنم؟

ermia2008
شنبه 17 بهمن 1388, 12:26 عصر
سلام دوست عزیز
خوب مشکلتون چیه؟

mf_arian
چهارشنبه 21 بهمن 1388, 12:06 عصر
سلام
برنامه ام سر
public static int binarysearch()
کامپایل نمی شه؟
merci

ermia2008
چهارشنبه 21 بهمن 1388, 14:23 عصر
سلام
برنامه ام سر
public static int binarysearch()
کامپایل نمی شه؟
merci

سلام دوست عزیز
برنامتون اشکال زیاد داشت.
اشکال اول اینکه در گذاشتن کروشه ها دقت نکرده بودید و تابع binarySerach در تابع Main تعریف شده بود.
اشکال دوم در System.out هاتون هم نتایج رو باید با "+" به هم بچسبونید نه با کاما
اشکال سوم اینکه شما تابع سرچتون رو جایی صدا نزده بودید!
اشکال چهارم اینکه آرگومانهای ورودی تابع و پارامترها دارای ترتیب درست نیودن که باعث میشه به کل خروجی برنامه اشتباه در بیاد

اصلاح شده برنامه به اینصورته:




import java.util.Scanner;

public class Main {


public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int [] a = new int [8];
int low=0;
int high=7;

for(int i=0 ; i<a.length ; i++)
{
System.out.printf("\r\nPlease enter a number :");
a[i] = input.nextInt();
}

System.out.printf("\r\nPlease enter an integer for Search:");
int key = input.nextInt();

System.out.printf("\r\nIt is in place " + binarysearch(a , low ,high ,key) );

}//end of main

public static int binarysearch(int[] numbers,int low,int high , int key){

if(low>high)
return -1;

int mid = (low + high)/2 ;

if(numbers [mid] == key)
return mid;

if(key < numbers[mid])
return binarysearch(numbers , low , mid-1 , key);
else
return binarysearch(numbers , mid+1,high , key);
}

}//end of Class Main




موفق باشید