Results 1 to 4 of 4
-
08-10-2008, 06:37 PM #1In The Zone
- Join Date
- Sep 2005
- Posts
- 227
Binary Search in C++ using old code, search doesnt register element in last position
hey,
Using old code(non-ANSI)
The search detects elements in all positions in the 1-d array, except the last one
pastebin- http://pastebin.com/f4db70a8b
Does anyone see my mistake? debugging is not my strong suit//program to run binary search
#include <iostream.h>
int main ()
{
int a[10],n,x,pos=-1,i,first,last,mid;
cout<<" Enter the number of elements into the array ";
cin>>n;
for(i=0;i<n;++i)
{
cout<<"\n Enter element number "<<i+1<<" ";
cin>>a[i];
}
cout<<"Enter the number to be searched \t";
cin>>x;
first=0;
last=n-1;
while((first<=last)&&(pos==-1))
{
mid=(first+last)/2;
if(a[mid]==x)
pos=mid;
else
last=mid-1;
}
if(pos==-1)
cout<<" \t Element not found ";
else
cout<<" Element found at position "<<pos+1;
return 0;
}Our deepest fear is not that we are inadequate Our deepest fear is that we are powerful beyond measure
-
08-10-2008, 07:47 PM #2
Re: Binary Search in C++ using old code, search doesnt register element in last posi
AFAIK, the logic is wrong mate...
Originally Posted by karmanya
Binary search should divide the array of elements into 2 and then find out which half the element is likely to be found..{assuming the array is sorted } and then narrow the search down to that particular half ...
the code you've posted doesn't do that..
it should be something like :
if ( element to be searched ) < the middle element,
then search the array from first element to an element before middle element
else
search the array from the element after the middle element to the last element
all this should be done within a conditional loop, ofcourse.
PS : it was soo tempting to write the code itself... but i guess you'd want to do it on your own ...Last edited by red_devil; 08-10-2008 at 07:54 PM. Reason: Automerged Doublepost
-
08-10-2008, 10:33 PM #3
Re: Binary Search in C++ using old code, search doesnt register element in last posi
Here, I'll write a pseudocode, I prefer it as a function due to recursive calling, returns array index if found, -1 if not.
Code:int binsearch (int a[], int start = 0, int end = sizeof(a)/sizeof(int), int searchelement) { mid = (start + end) / 2; if (a[mid] == searchelement) //bingo, got it return mid; else if ((a[mid] > searchelement) && (mid != start)) //to prevent infinite loops return binsearch (a[], start, mid, searchelement); else if ((a[mid] < searchelement) && (mid != start)) //to prevent infinite loops return binsearch (a[], mid, end, searchelement); else //to actually exit from the function return -1; }If the Start Windows Restart when Windows starts check box is checked Windows Restart will start automatically every time Windows is started. - Actual excerpt from a windows program help file
-
09-10-2008, 10:55 AM #4In The Zone
- Join Date
- Sep 2005
- Posts
- 227
Re: Binary Search in C++ using old code, search doesnt register element in last posi
Thanks guys, Thanks to QwertyM who helped me fix it.
last=mid instead of mid-1 fixed it.Our deepest fear is not that we are inadequate Our deepest fear is that we are powerful beyond measure
Similar Threads
-
Search The Internet Safely With Search & Tips New Site!
By vera in forum Internet & WWWReplies: 0Last Post: 24-10-2010, 05:18 PM -
How to make a firefox search engine plugin in search box
By blademast3r in forum Internet & WWWReplies: 1Last Post: 13-06-2008, 06:25 PM -
Binary Search
By NagpurDaMunda in forum QnA (read only)Replies: 8Last Post: 21-04-2007, 01:04 PM -
Inserting AdSense for search code
By whoopy_whale in forum QnA (read only)Replies: 1Last Post: 28-07-2005, 06:32 PM -
Search and find your Google position without certain filters
By expertno.1 in forum Internet & WWWReplies: 1Last Post: 18-05-2005, 06:00 PM



LinkBack URL
About LinkBacks

Bookmarks