interpolációs keresés

Üdvözlöm, Ön a interpolációs keresés szó jelentését keresi. A DICTIOUS-ban nem csak a interpolációs keresés szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a interpolációs keresés szót egyes és többes számban mondani. Minden, amit a interpolációs keresés szóról tudni kell, itt található. A interpolációs keresés szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Ainterpolációs keresés és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Kiejtés

  • IPA:

Főnév

interpolációs keresés

  1. (matematika, algoritmusok) Az interpolációs keresés egy keresési algoritmus, amelyet rendezett (növekvő vagy csökkenő) listákban használunk. Az algoritmus azzal optimalizálja a keresést, hogy nem a középső elemet veszi alapul, mint a bináris keresés, hanem a keresett érték és a lista szélső értékei alapján „interpolálja”, hogy a keresett érték valószínűleg hol helyezkedik el. Ez hasonló ahhoz, ahogyan az emberek egy telefonkönyvben keresnek.



Elméleti leírás

Az interpolációs keresés az alábbi logikát követi:

1. Vegyük a tartomány két szélső indexét: ‘low‘ és ‘high‘.

2. Ha a keresett érték (key) a és indexek közötti értéktartományban van: - Számítsuk ki az interpolált pozíciót: - Ellenőrizzük az interpolált pozíció értékét:

- Ha az megegyezik a keresett értékkel, térjünk vissza az indexével.

- Ha kisebb, folytassuk a keresést a bal oldali tartományban.

- Ha nagyobb, folytassuk a jobb oldali tartományban.

3. Ha a keresett érték nem a tartományban van, az érték nincs a listában.



Pszeudokód

function interpolációs_keresés(arr, n, key):
    low = 0
    high = n - 1

    while low <= high and key >= arr and key <= arr:
        if low == high:
            if arr == key:
                return low
            return -1

        pos = low + ((key - arr) * (high - low)) // (arr - arr)

        if arr == key:
            return pos

        if arr < key:
            low = pos + 1
        else:
            high = pos - 1

    return -1

Python implementáció

def interpolation_search(arr, key):
    low = 0
    high = len(arr) - 1

    while low <= high and key >= arr and key <= arr:
        if low == high:
            if arr == key:
                return low
            return -1

        pos = low + ((key - arr) * (high - low)) // (arr - arr)

        if arr == key:
            return pos

        if arr < key:
            low = pos + 1
        else:
            high = pos - 1

    return -1


# Példa használat
arr = 
key = 30
result = interpolation_search(arr, key)
if result != -1:
    print(f"A(z) {key} érték megtalálható a(z) {result}. indexen.")
else:
    print(f"A(z) {key} érték nincs a listában.")

C++ implementáció

#include <iostream>
using namespace std;

int interpolationSearch(int arr, int n, int key) {
    int low = 0, high = n - 1;

    while (low <= high && key >= arr && key <= arr) {
        if (low == high) {
            if (arr == key)
                return low;
            return -1;
        }

        int pos = low + ((key - arr) * (high - low)) / (arr - arr);

        if (arr == key)
            return pos;

        if (arr < key)
            low = pos + 1;
        else
            high = pos - 1;
    }

    return -1;
}

int main() {
    int arr = {10, 20, 30, 40, 50};
    int n = sizeof(arr) / sizeof(arr);
    int key = 30;

    int result = interpolationSearch(arr, n, key);
    if (result != -1)
        cout << "A(z) " << key << " érték megtalálható a(z) " << result << ". indexen." << endl;
    else
        cout << "A(z) " << key << " érték nincs a listában." << endl;

    return 0;
}

Összegzés

Az interpolációs keresés hatékony, ha a lista értékei egyenletesen oszlanak el, mert ilyenkor az interpolált pozíció pontosabban közelíti a keresett érték helyét. A legrosszabb esetben azonban az időbonyolultsága (O(n)), míg a legjobb esetben (O(n)). Emiatt elsősorban egyenletes eloszlású adatoknál ajánlott használni.

Fordítások