-
October 11th, 2015, 04:05 PM
#1
[RESOLVED] My out put is telling me that numbers in the array are not in the array.
The program worked correctly when the numbers were in descending order, but when I changed the array to ascending order it is giving me wrong output.
Code:
#include<iostream>
using namespace std;
int binarySearch(int [], int, int); // function prototype
const int SIZE = 16;
int main()
{
int found, value;
int array[] = { 0,2,2,3,5,9,11,12,12,12,13,17,18,19,19,34 };
// array to be searched
cout << "Enter an integer to search for:" << endl;
cin >> value;
found = binarySearch(array, SIZE, value); //function call to perform the binary search
//on array looking for an occurrence of value
if (found == -1)
cout << "The value " << value << " is not in the list" << endl;
else
{
cout << "The value " << value << " is in position number "
<< found + 1 << " of the list" << endl;
}
system("pause");
return 0;
}
//*******************************************************************
// binarySearch
//
// task: This searches an array for a particular value
// data in: List of values in an orderd array, the number of
// elements in the array, and the value searched for
// in the array
// data returned: Position in the array of the value or -1 if value
// not found
//
//*******************************************************************
int binarySearch(int array[],int numElems,int value) //function heading
{
int first = 0; // First element of list
int last = numElems - 1; // last element of the list
int middle = 0; // variable containing the current
// middle value of the list
while (first <= last)
{
middle = first + (last - first) / 2;
if (array[middle] == value)
return middle; // if value is in the middle, we are done
else if (array[middle]<value)
last = middle - 1; // toss out the second remaining half of
// the array and search the first
else
first = middle + 1; // toss out the first remaining half of
// the array and search the second
}
return -1; // indicates that value is not in the array
}
-
October 11th, 2015, 04:10 PM
#2
Re: My out put is telling me that numbers in the array are not in the array.
Think about how a binary search works. It depends on the array being sorted and making decisions based on whether the value at the array position is greater than or less than the value you're seeking. Obviously the action you take would be different based on the order of the array.
-
October 11th, 2015, 04:14 PM
#3
Re: My out put is telling me that numbers in the array are not in the array.
Ohhhh now I understand. I thought of something like what you said before coming here but wasn't sure on which line to modify. I modified "else if (array[middle]<value)" to "else if (array[middle]>value)" and got my desired output. Thank You.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|