Bang hộiTiền mặt: 0 Xu Trò chơiHộp quà giáng sinhThứ Sáu, 02:50:03 - 22/11/2024
Chia sẻ kiến thức ngôn ngữ lập trình C, C++, C#, Java, Python, PHP, JS, SQL ...

Các điều hành viên: Mod, SMod, Admin

[C++] Các thuật toán tìm kiếm cơ bản thường sử dụng

Re: [C++] Các thuật toán tìm kiếm cơ bản thường sử dụng

#3 » Gửi bài gửi bởi nghiammo1992 » 13/09/2021 11:03 » @523449

Thuật toán tìm kiếm nội suy (interpolation search) (code này chỉ áp dụng cho mảng đã sắp xếp tăng dần)

Mã: Chọn tất cả
#include <iostream>


using namespace std;


int InterpolationSearch(int A[], int n, int x)
{
    int left = 0;
    int right = n - 1;
    int mid;
    while (left <= right && x >= A[left] && x <= A[right])
    {
        mid = left + (right - left) * (- A[left]) / (A[right] - A[left]);
        if (A[mid] == x)
            return mid;
        if (A[mid] > x)
            right = mid - 1;
        else if (A[mid] < x)
            left = mid + 1;
    }
    return -1; // Không tìm thấy x
}

int main()
{

    int arr[] {-33,-26,-5,1,2,3,7,12,32,45,53,71,80,99,100};

    int n = sizeof(arr) / sizeof(arr[0]); // so luong phan tu trong mang

    cout << "So luong phan tu trong mang: " << n << endl;

    cout << InterpolationSearch(arr, n, -5);

    return 0;
}
Sửa lần cuối: nghiammo1992 03/06/2022 02:50
nghiammo1992
Hình đại diện của thành viên
Rank: ☀️2/30☀️
Cấp độ:
Tu luyện:
Like:
Online:
Bang hội: Tiếu Ngạo
Xếp hạng Bang hội: ⚡5/46⚡
Level:
Chủ đề đã tạo: 🩸4141/4141🩸
Tiền mặt:
Ngân hàng:
Nhóm:
Danh hiệu: ⚝⚝⚝Truyền Thuyết⚝⚝⚝
Giới tính:
Ngày tham gia:
Đến từ:
Thiết bị:
Số điện thoại:
(Google Chrome 94.0.460)

- Chia sẻ bài viết:

- Xem full chủ đề: http://chiase123.com/viewtopic.html?t=38281

- Link bài viết: http://chiase123.com/topic38281-2.html#p523449

Quay về C, C++, C#, Java, Python, PHP, JS, SQL ...