二分搜索之C++实现
二分搜索之C++实现
一、源代码:BinarySearch.cpp
1 #include<iostream> 2 using namespace std; 3 4 /*定义输出一维数组的函数*/ 5 void print(int array[], int n) 6 { 7 for (int i = 0; i < n; i++) 8 { 9 cout << array[i] << " "; 10 } 11 cout << endl; 12 } 13 14 /*定义二分搜索的函数:array,有序序列;n,序列长度;x,要查找的数*/ 15 int binarySearch(int array[], int n, int x) 16 { 17 //初始化左右边界 18 int left = 0, right = n - 1; 19 //当左右边界不重合时 20 while (left <= right) 21 { 22 //初始化边界的中点 23 int middle = (left + right) / 2; 24 //判断所查找元素和当前中点元素是否相等,如果相等则返回中点元素所在的位置 25 if (x == array[middle]) 26 { 27 return middle; 28 } 29 else if (x > array[middle]) 30 { 31 //如果所查找元素大于中点元素,则所查找元素在右部分,则将左边界向右移 32 left = middle + 1; 33 } 34 else{ 35 //说明所查找元素小于中点元素,则所查找元素在做部分,则将右边界向左移 36 right = middle - 1; 37 } 38 } 39 //如果找不到,则返回-1 40 return -1; 41 } 42 int main() 43 { 44 //定义待排序的一维数组 45 int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; 46 //输出原始数组 47 cout << "原始数组是:" << endl; 48 print(array, 10); 49 //定义要查找的数 50 int number; 51 //输入要查找的数 52 cout << "请输入要查找的数:"; 53 cin >> number; 54 //调用二分搜索的函数进行查找 55 int location = binarySearch(array, 10, number); 56 if (location > 0) 57 { 58 //说明找到了 59 cout << number << "在该序列中,是第" << (location + 1) << "个数" << endl; 60 } 61 else 62 { 63 //说明没找到 64 cout << number << "不在该序列中..." << endl; 65 66 } 67 return 0; 68 }
二、运行效果
在序列中
不在序列中
由于本人技术有限,有不足之处,请指出,谢谢!!!欢迎评论。。。