1. 程式人生 > >二分搜索之C++實現

二分搜索之C++實現

[] .com 技術 ont 說明 tex ron ostream 一維數組

二分搜索之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 }

二、運行效果

在序列中

技術分享

不在序列中

技術分享

二分搜索之C++實現