Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tìm kiếm nhị phân trong vector cặp đã sắp xếp trong C++

Đâ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