Đây là chương trình C++ triển khai tìm kiếm nhị phân trong vector cặp (pair) đã sắp xếp.
Thuật toán
Bắt đầu
Khai báo cấu trúc keycompare.
Hàm operator()(const pair& v, const int& k) trả về Boolean.
Trạng thái = v.first < k.
Trả về trạng thái.
Hàm operator()(const int& k, const pair& v) trả về Boolean.
Trạng thái = k < v.first.
Trả về trạng thái.
Khai báo vector v.
Khai báo cặp key và value trong v kiểu integer.
Gọi push_back() để chèn giá trị vào vector v.
Gọi sort() để sắp xếp tất cả phần tử của vector v.
In "Vector đã sắp xếp".
In "Key" "Value".
for (pair& n : v)
In first và second của n.
if (binary_search(v.begin(), v.end(), 50, keycompare())) thì
In "50 tồn tại trong vector".
Ngược lại
In "50 không tồn tại".
if (binary_search(v.begin(), v.end(), 7, keycompare())) thì
In "7 tồn tại trong vector".
Ngược lại
In "7 không tồn tại".
Kết thúc.
Mã ví dụ
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
struct keycompare {
bool operator()(const pair<int, int>& v, const int& k) {
return (v.first < k);
}
bool operator()(const int& k, const pair<int, int>& v) {
return (k < v.first);
}
};
int main() {
vector<pair<int, int>> v;
v.push_back(make_pair(7, 26));
v.push_back(make_pair(6, 76));
v.push_back(make_pair(4, 16));
v.push_back(make_pair(5, 36));
sort(v.begin(), v.end());
cout << "Vector đã sắp xếp" << endl;
cout << "KEY" << '\t' << "VALUE" << endl;
for (pair& n : v)
cout << n.first << '\t' << n.second << endl;
if (binary_search(v.begin(), v.end(), 50, keycompare()))
cout << "50 tồn tại trong vector";
else
cout << "50 không tồn tại";
cout << endl;
if (binary_search(v.begin(), v.end(), 7, keycompare()))
cout << "7 tồn tại trong vector";
else
cout << "7 không tồn tại";
return 0;
}
Kết quả
Vector đã sắp xếp KEY VALUE 4 16 5 36 6 76 7 26 50 không tồn tại 7 tồn tại trong vector