实验六完成

This commit is contained in:
2024-12-22 01:24:50 +08:00
parent 1fba558d43
commit 04e9780b47
2 changed files with 21 additions and 21 deletions
+20 -20
View File
@@ -4,34 +4,34 @@
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];
template <typename T>
int BinarySearch(const vector<T>& arr, T target, int left, int right) {
if (left > right) {
return -1; // 未找到目标值
}
for (int i=mid+1;i<=high;i++) {
sr[i]=p[i];
int mid = left + (right - left) / 2; // 计算中间位置
cout << "正在查找第"<<mid+1 <<""<<"其值为"<<arr.at(mid)<< endl;
if (arr[mid] == target) {
return mid; // 找到目标值,返回索引
} else if (target < arr[mid]) {
return BinarySearch(arr, target, left, mid - 1); // 在左半部分递归查找
} else {
return BinarySearch(arr, target, mid + 1, right); // 在右半部分递归查找
}
}
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);
template <typename T>
int BinarySearch(const vector<T>& arr, T target) {
return BinarySearch(arr, target, 0, arr.size() - 1);
}
int main() {
vector<int> l = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
const int index=BinarySearch(l, 9);
cout<<index<<endl;
return 0;
}