Rumah >pembangunan bahagian belakang >C++ >Cara menggunakan algoritma carian interpolasi dalam C++
Cara menggunakan algoritma carian interpolasi dalam C++
Pengenalan:
Dalam banyak aplikasi, kita selalunya perlu mencari dan mencari elemen tertentu dalam tatasusunan tersusun atau koleksi data tersusun. Algoritma carian binari tradisional adalah salah satu kaedah yang paling biasa digunakan, tetapi dalam beberapa kes, ia mungkin tidak cukup cekap. Algoritma carian interpolasi ialah algoritma carian yang dipertingkatkan yang boleh mencari elemen sasaran dengan lebih pantas berdasarkan pengedaran data yang diketahui. Artikel ini akan memperkenalkan algoritma carian interpolasi dan cara menggunakannya dalam C++, dan memberikan contoh kod.
#include <iostream> #include <vector> // 插值搜索算法函数 int interpolationSearch(const std::vector<int>& arr, int target) { int low = 0; int high = arr.size() - 1; while (low <= high && target >= arr[low] && target <= arr[high]) { // 计算预估位置 int pos = low + ((target - arr[low]) * (high - low)) / (arr[high] - arr[low]); if (arr[pos] == target) { return pos; } if (arr[pos] < target) { low = pos + 1; } else { high = pos - 1; } } return -1; // 没有找到目标元素 } int main() { std::vector<int> arr = {1, 3, 5, 7, 9, 11, 13, 15}; int target = 9; int result = interpolationSearch(arr, target); if (result != -1) { std::cout << "目标元素 " << target << " 的索引位置为 " << result << std::endl; } else { std::cout << "目标元素 " << target << " 未找到" << std::endl; } return 0; }
Dalam kod di atas, kami mula-mula mentakrifkan fungsi bernama interpolationSearch
的函数,它接受一个有序的整数向量arr
和目标元素target
作为参数。接下来,在函数中我们定义了两个指针low
和high
,它们表示搜索的范围。然后,我们使用一个循环来进行搜索,直到找到目标元素或搜索范围为空。在循环中,我们首先计算目标元素的预估位置pos
,然后检查该位置上的元素是否是目标元素。如果是,我们返回该位置。否则,我们根据目标元素和预估位置的比较结果更新low
和high
指针的值,缩小搜索范围,直到找到目标元素或搜索范围为空。最后,在主函数中,我们定义了一个有序的整数向量arr
和目标元素target
,并调用interpolationSearch
untuk melaksanakan algoritma carian interpolasi. Jika elemen sasaran ditemui, kami mencetak kedudukan indeksnya jika elemen sasaran tidak ditemui, kami mencetak maklumat segera yang sepadan.
Atas ialah kandungan terperinci Cara menggunakan algoritma carian interpolasi dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!