In: Computer Science
C++ ONLY Binary Search and Selection Sort
A binary search first requires a sort.
Use a selection sort to organize an array, then find the value using a binary search.
Input the array, and a value to find.
Output the sorted array and the value if contained in the array.
/*
* File: main.cpp
* Author:
* Created on:
* Purpose: Binary Search
*/
//System Libraries
#include <iostream> //Input/Output Library
#include <cstdlib> //Random Functions
#include <ctime> //Time Library
using namespace std;
//User Libraries
//Global Constants, no Global Variables are allowed
//Math/Physics/Conversions/Higher Dimensions - i.e. PI, e,
etc...
//Function Prototypes
void fillAry(int [],int);
void prntAry(int [],int,int);
void selSrt(int [],int);
bool binSrch(int [],int,int,int&);
//Execution Begins Here!
int main(int argc, char** argv) {
//Set the random number seed
srand(static_cast<unsigned int>(time(0)));
//Declare Variables
const int SIZE=100;
int array[SIZE];
int indx,val;
//Initialize or input i.e. set variable values
fillAry(array,SIZE);
//Sorted List
selSrt(array,SIZE);
//Display the outputs
prntAry(array,SIZE,10);
cout<<"Input the value to find in the
array"<<endl;
cin>>val;
if(binSrch(array,SIZE,val,indx))
cout<<val<<" was found at indx =
"<<indx<<endl;
//Exit stage right or left!
return 0;
}
/*
* File: main.cpp
* Author:
* Created on:
* Purpose: Binary Search
*/
//System Libraries
#include <iostream> //Input/Output Library
#include <cstdlib> //Random Functions
#include <ctime> //Time Library
using namespace std;
//User Libraries
//Global Constants, no Global Variables are allowed
//Math/Physics/Conversions/Higher Dimensions - i.e. PI, e, etc...
//Function Prototypes
void fillAry(int [], int);
void prntAry(int [], int, int);
void swap(int *, int *);
void selSrt(int [], int);
bool binSrch(int [], int, int, int&);
//Execution Begins Here!
int main(int argc, char** argv)
{
//Set the random number seed
srand(static_cast <unsigned int> (time(0)));
//Declare Variables
const int SIZE = 100;
int array[SIZE];
int indx = -1, val;
//Initialize or input i.e. set variable values
fillAry(array, SIZE);
//Sorted List
selSrt(array, SIZE);
//Display the outputs
prntAry(array, SIZE, 10);
cout << "Input the value to find in the array"<< endl;
cin >> val;
if (binSrch(array, SIZE, val, indx))
cout << val << " was found at indx = " << indx << endl;
//Exit stage right or left!
return 0;
}
void fillAry(int arr[], int size)
{
for (int i = 0; i < size; i++)
{
arr[i] = rand()%1000;
}
}
void prntAry(int arr[], int size, int N)
{
for(int i = 0; i < N; i++)
{
cout << arr[i] << " ";
}
cout << endl;
}
void swap(int *x, int *y)
{
if( *x != *y)
{
int temp = *x;
*x = *y;
*y = temp;
}
}
bool binSrch(int arr[], int size, int val, int &indx)
{
int l = 0;
int r = size - 1;
while (l <= r)
{
int m = l + (r - l) / 2;
if (arr[m] == val)
{
indx = m;
return true;
}
if (arr[m] < val)
l = m + 1;
else
r = m - 1;
}
return false;
}
void selSrt(int arr[], int size)
{
int i, j, min_indx;
for(i = 0; i < size; i++)
{
min_indx = i;
for(j = i+1; j < size; j++)
{
if(arr[min_indx] > arr[j])
min_indx = j;
}
swap(&arr[i], &arr[min_indx]);
}
}
/* Program ends Here*/
