// Binary Search
#include <iostream>
using namespace std;
void SwapTwo(int &a, int &b)
{
int temp = a;
a = b;
b= temp;
}
void SortNums(int nums[], int size)
{
for (int i=1; i<size; i++)
{
int j=i;
while ((nums[j] < nums[j-1]) && j!=0)
{
SwapTwo(nums[j], nums[j-1]);
j--;
}
}
}
int BinarySearch(int nums[], int size, int key)
{
int position = size/2;
if (key == nums[position])
{
return position;
}
int lowerBound = 0, upperBound = size-1;
while (nums[position] != key && lowerBound < upperBound)
{
if (key < nums[position])
{
upperBound = position-1;
}
else
{
lowerBound = position+1;
}
position = (upperBound+lowerBound)/2;
}
if (lowerBound > upperBound)
{
cout << "not found" << endl;
return 999999;
}
return position;
}
void Display(int nums[], int size)
{
for (int i=0; i<size; i++)
{
cout << nums[i]<<endl;
}
}
int main()
{
int nums[10] = {10,5,3,56,12,89,45,2,4,455};
int size = sizeof(nums)/sizeof(int);
SortNums(nums, size);
Display(nums, size);
int num=0;
cout << "pls enter a number u want to search: ";
cin >> num;
if (!cin.good())
{
cout << "error!\n";
return 9;
}
cout << "the index of the number which you are searching is "<<BinarySearch(nums, size, num)<<" in the sorted list.\n";
return 0;
}
二叉搜索(Binary Search)
最新推荐文章于 2023-01-18 14:56:35 发布