PDA

View Full Version : سوال: جستجوی دودویی و مرتب سازی



bazardeh
پنج شنبه 13 آبان 1389, 10:12 صبح
سلام برنامه ی که در پایین است برنامه ی مرتب سازی و جستجوی دودویی ست که در قسمت جستجو مشکل کوچکی دارد(مشکل داخل کلاس قسمت تابع binsrearch است ) و کلاس و مرتب سازی اش درسته لطفاً کمک کنید:اشتباه::اشتباه::لبخند:

bazardeh
پنج شنبه 13 آبان 1389, 12:50 عصر
سلام دوستان به این صورت تابع جستجوی دودویی را صدا زدم قبلاً مرتب کرده ام



private void button3_Click(object sender, EventArgs e)
{

// SalehClass.sor(array);
int bin = System.Convert.ToInt32(Interaction.InputBox("Enter Number", "عدد مورد نظر براي جستجوي باينري" , "عدد مورد نظر ", 350, 250));
double x= SalehClass.binsearch(array,bin);
if (x == -1) textBox1.Text = ("number not found");
else textBox1.Text="pida shod";
}



داخل کلاس


class SalehClass
{
public static double binsearch(int[] arr,int bin)
{
int l= 0;
int h = 9;
while (l < h)
{
int mid = (l + h) / 2;
if (arr[mid] == bin) return mid;
else if (arr[mid] < bin) l = mid + 1;
else if (arr[mid] > bin) h = mid - 1;
else MessageBox.Show("nist");//روی وگرنه ی آخر نمیاد
}

return 0;
}


مشکل جستجوی دودویی من چیه با تشکر:افسرده::افسرده:

bade saba
پنج شنبه 13 آبان 1389, 13:08 عصر
سلام برنامه ی که در پایین است برنامه ی مرتب سازی و جستجوی دودویی ست که در قسمت جستجو مشکل کوچکی دارد(مشکل داخل کلاس قسمت تابع binsrearch است ) و کلاس و مرتب سازی اش درسته لطفاً کمک کنید:اشتباه::اشتباه::لبخند:




public static double binsearch(int[] arr,int bin)
{
int l= 0;
int h = 9;
while (l < h)
{
int mid = (l + h) / 2;
if (arr[mid] == bin) return mid;
else if (arr[mid] < bin) l = mid + 1;
else if (arr[mid] > bin) h = mid - 1;
else MessageBox.Show("nist");//
}

return 0;
}


دوست عزیز تو این بخش از کدتون شما در صورت این که عدد رو پیدا نکنید مقدار 0 رو بر میگردونید در صورتی که تو بدنه کدتون حالت پیدا نکردن عدد رو برگردوندن عدد 1- در نظر گرفتید



if (x == -1) textBox1.Text = ("number not found");


در ضمن این خط کد


else MessageBox.Show("nist");//


هیچ وقت اجرا نمیشه مقایسه ای که نوشتی رو نگاه کن یه عدد در مقایسه با یه عدد دیگه یا مساوی یا بزرگتر یا کوچیکتر حالت چهارم دیگه چی میتونه باشه؟؟؟؟:متفکر:

گرچه این خط مشکلی ایجاد نمیکنه اما اضافی هستش

موفق باشی