تبلیغات
آموزش برنامه نویسی سی ++،سی شارپ،جاوا اسکریپت - جست و جوی دودویی
آموزش برنامه نویسی سی ++،سی شارپ،جاوا اسکریپت

مرتبه
تاریخ : جمعه 2 دی 1390
برنامه: پیدا کردن یک عدد در آرایه به روش دودویی یا Binary Search  

الگوریتم:

ابتدا آرایه ی ورودی را توسط یکی از روش های مرتب سازی (به عنوان مثال مرتب سازی حبابی یا Buble Sort)  که قبلا نوشته ایم ،مرتب کرده سپس با دستورات زید به جست و جو می پردازیم


int binary_search(int arr[],int arrsize,int obj)
{
     int first = 0;
     int last = arrsize;
     int middle = (first + last) / 2;

      while(last >= first)
      {
             if(arr[middle] == obj)
             {
                               return middle;
             }
              else if(arr[middle] > obj)
                     {
                            last = middle-1;
                            middle = (first + last) / 2;
                       }else
                              {
                                       first = middle+1;
                                       middle = (first + last) / 2;
                               }
           }
return -1;
}

ورودی ها عبارتند از: 

1 - یک آرایه (مرتب شده به صورت صعودی). (اگر آرایه نزولی مرتب شده باید جای ">"  ,  "<" را عوض کنیم)

2 - اندازه ی آرایه

3 - و عددی که باید دنباله آن بگردیم.


که در صورت پیدا کردن عدد در آرایه عنصر، اندیس آن و در غیر اینصورت عدد منفی یک ( 1- ) را بر می گرداند.


* نکات مربوط به کد سی شارپ و جاوااسکریپت

تکست باکس اول  آرایه ی ورودی را با این فرمت که پس از هر عدد یک " , " باشد(بدون هیچ فاصله ای) را گرفته و در تکست باکس دوم عددی را که باید به دنبال آن بگریم  از ورودی می گیریم.

 برنامه ی جست و جوی دودویی به زبان ++C
 //Writed By barnamenevisi-ccj.mihanblog.com

#include<iostream.h>
#include<conio.h>

#define size 10
//--------------------------Buble Sort-------------------------------
void bubleSort(int num[],int numSize)
{
   int temp=0;
   for(int i=numSize;i>0;i--)
   {
           for(int j=0;j<i;j++)
                 if(num[j] > num[j+1])
                 {
                            temp = num[j];
                            num[j] = num[j+1];
                            num[j+1] = temp;
                  }
   }

}
//-----------------------Binary Search-------------------------------------
int binary_search(int arr[],int arrsize,int obj)

{
   int first = 0;
   int last = arrsize;
   int middle = (first + last) / 2;

   while(last >= first)
   {
           if(arr[middle] == obj)
           {
                     return middle;
            }
            else if(arr[middle] > obj)
                   {
                           last = middle-1;
                           middle = (first + last) / 2;
                   }else
                          {
                                first = middle+1;
                                middle = (first + last) / 2;
                           }
   }
return -1;
}
//--------------------------Main ------------------------------------
main()
{

   int test[size]={10,19,12,18,15,17,11,14,13,16};
   int searchobj=0;
   int flag;

   //sort array
   bubleSort(test,size-1);

   cout<<"Enter number to search : ";
   cin>>searchobj;

   flag = binary_search(test,size-1,searchobj);

   if(flag != -1)
                    cout<<"\nfind item in element "<<flag+1<<" .";
   else         cout<<"\nnot found.";

getch();
return 0;
}


   برنامه ی جست و جوی دودویی به زبان #C 
 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//-----------------------Binary Search-------------------------------------
int binary_search(int[] arr, int arrsize, int obj)

{
   int first = 0;
   int last = arrsize;
   int middle = (first + last) / 2;

   while(last >= first)
   {
            if(arr[middle] == obj)
            {
                     return middle;
             }
            else if(arr[middle] > obj)
                   { 
                             last = middle-1;
                             middle = (first + last) / 2;
                   }else{
                                 first = middle+1;
                                 middle = (first + last) / 2;
                            }
    }
return -1;
}
//.............................Buble Sort........................................
int[] bubleSort(string test)
{
   int i = 0;
   int test2size = 0;

   for (i = 0; i < txt1.TextLength; i++)
         if (test[i] == ',')
               test2size++;

    int[] test2 = new int[test2size];
   test2size = 0;

    for (i = 0; i < txt1.TextLength; i++)
   {

        if (test[i] != ',')
                 test2[test2size] = test2[test2size] * 10 + Int32.Parse(test[i].ToString());
        else test2size++;

   }
   //sorting by buble sort algorithm
   int temp = 0;
   for (i = test2size - 1; i > 0; i--)
   {
             for (int j = 0; j < i; j++)
                      if (test2[j] > test2[j + 1])
                      {
                                 temp = test2[j];
                                 test2[j] = test2[j + 1];
                                 test2[j + 1] = temp;
                       }
   }

return test2;

}
private void button1_Click(object sender, EventArgs e)
{
   int flag;
   int[] test = bubleSort(txt1.Text);

   flag = binary_search(test, test.Length, Int32.Parse(txt2.Text));
   if (flag != -1)
   {
                 MessageBox.Show("Find item on element " + (flag + 1) + " .");
   }
   else MessageBox.Show("Not Found.");

}
}
}


   برنامه ی جست و جوی دودویی به زبان JavaScript 
 <%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<script language="javascript" type="text/javascript">
function bs(myform)
{


  var i = 0;
  var test = myform.txtnum.value;
  var test2size = 0;
  var object=eval(myform.search_obj.value)

//start incoding char Array test to int Array test2. (example:5,3,1,2,6,4,2,(char) to 5,3,1,2,6,4,2(int))
  for (i = 0; i < myform.txtnum.value.length; i++)
  {

         if (test.charAt(i) == ',')
        {
              test2size++;
         }

  }

  var test2 = new Array(test2size);
  test2size = 0;
  test2[test2size]=0;
  for (i = 0; i < myform.txtnum.value.length; i++)
  {

         if (test.charAt(i) != ',')
         {

                      test2[test2size] = ((test2[test2size] * 10) + parseInt(test.charAt(i)));
          }
          else
               {
                          test2size++;
                          test2[test2size]=0;
                }
  }

//end incoding


//Sorting Array by Buble Algorithm
   var temp = 0;
   for (i = test2size - 1; i > 0; i--)
   {
       for (j = 0; j < i; j++)
       {
            if (test2[j] > test2[j + 1])
            {
                     temp = test2[j];
                     test2[j] = test2[j + 1];
                     test2[j + 1] = temp;
             }
       }

}

//شروع دستورات جست و جو

//Search object in test2 array
   var first = 0;
   var last = test2size - 1;
   var middle = Math.floor((first + last) / 2);

   while(last >= first)
   {
            if(test2[middle] == object)
            {
                              alert("Find Your Number In Element "+(middle+1)+" .")
                              return ;
             }
             else if(test2[middle] > object)
                    {
                           last = middle-1;
                           middle = Math.floor((first + last) / 2);
                     }else
                            {
                                  first = middle+1;
                                  middle = Math.floor((first + last) / 2);
                              }
    }
   alert("Not Find :(")
}
</script>
<body>
<form name="form1">
Enter number's (Array for Example:"5,6,3,4,2,3,".without "" and Any Space):<br><input type="text" name="txtnum"><br>
Enter Number to search below.<br>
<input type="text" name="search_obj">
<input type="button" value=" Binary Search " onClick="bs(form1)">
</form>
</body>
</html>







می تونید با ارسال شارژ از من حمایت کنید 09392888216
برچسب ها: سورس کد برنامه جست و جوی دودویی به زبان سی++، سورس کد برنامه جست و جوی دودویی به زبان سی پلاس پلاس، سورس کد برنامه جست و جوی دودویی به زبان سی شارپ، سورس کد برنامه جست و جوی دودویی به زبان جاوااسکریپت، سورس کد برنامه جست و جوی دودویی به زبان c++، سورس کد برنامه جست و جوی دودویی به زبان c#، سورس کد برنامه جست و جوی دودویی به زبان javascript، سورس کد برنامه binary search به زبان c++، سورس کد برنامه binary search به زبان c#، سورس کد برنامه binary search به زبان javascript، سورس کد برنامه binary search به زبان سی++، سورس کد برنامه binary search به زبان سی پلاس پلاس، سورس کد برنامه binary search به زبان سی شارپ،
آرشیو مطالب
صفحات جانبی
پیوند های روزانه
امکانات جانبی
blogskin

قالب وبلاگ