38 lines
805 B
C++
38 lines
805 B
C++
// 编写一个程序,输出在顺序表(1,2, 3, 4, 5, 6, 7, 8, 9, 10)中采用折半查找方法查找关键字9的过程。
|
|
#include<iostream>
|
|
#include<vector>
|
|
|
|
using namespace std;
|
|
|
|
template<typename T>
|
|
|
|
void ListBinaryCopy(vector<T> p,vector<T> sl,vector<T> sr) {
|
|
int low=0;
|
|
int high=p.size()-1;
|
|
int mid=(low+high)/2;
|
|
|
|
for (int i=low;i<=mid;i++) {
|
|
sl[i]=p[i];
|
|
}
|
|
|
|
for (int i=mid+1;i<=high;i++) {
|
|
sr[i]=p[i];
|
|
}
|
|
}
|
|
|
|
template<typename T>
|
|
int BinarySearch(vector<T> l, T value) {
|
|
if (l.empty()) return -1;
|
|
|
|
vector<T> sub_list_left, sub_list_right;
|
|
ListBinaryCopy(l, sub_list_left);
|
|
|
|
BinarySearch(sub_list_left, value);
|
|
BinarySearch(sub_list_right, value);
|
|
}
|
|
|
|
int main() {
|
|
vector<int> l = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
|
|
return 0;
|
|
}
|