专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

顺序查找的几种方式

顺序查找,又叫线性查找,是最基本的查找技术,他的查找过程是:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定值相等,则查找成功,如果全部比较仍没有相等的,则查找失败。

1. 顺序查找

//a为数组,n为查找的数组个数,key为要查找的关键字;
int Sequential_Search(int *a,int n,int key){
    for (int i = 1; i <= n ; i++)
        if (a[i] == key)
            return i;

    return 0;
}

顺序查找的优化

// 顺序查找优化
int Sequential_Search2(int *a, int n, int key){

    a[0] = key;
    int i = n; // 从后向前,减少for循环中 <= 计算

    while (a[i] != key) {
        i--;
    }
    return i;
}

2. 折半查找/二分查找

// 二分查找/折半查找
int Binary_Search(int *a, int n, int key){
    int low = 1;
    int high = n;
    int mid = 0;
    while (low <= high) {
        mid = (low + high)/2;
        if (a[mid] > key) {
            high = mid-1;
        }else if (a[mid] < key){
            low = mid+1;
        }else{
            break;
        }
    }
    return mid;
}

3. 插值查找

// 插值查找
int Interpolation_Search(int *a, int n, int key){
    int low = 1;
    int high = n;
    int mid = 0;

    while (low <= high) {
        mid = low + (key-a[low]) / (a[high]-a[low]) * (high-low);
        if (a[mid] > key) {
            high = mid-1;
        }else if (a[mid] < key){
            low = mid+1;
        }else{
            break;
        }
    }
    return mid;
}

4. 斐波拉契查找

int F[100];

int Fibonacci_Search(int *a, int n, int key){

    int low,high,mid,i,k;
    low = 1;
    high = n;
    k = 0;
    // 1.计算n为斐波拉起数列的位置
    while (n > F[k]-1) {
        k++;
    }
    // 2.将数组a不满的位置补全
    for (i = n; i<F[k]-1; i++) {
        a[i] = a[n];
    }
    //3.循环对比
    while (low <= high) {
        // 计算当前分割的下标
        mid = low + F[k-1] - 1;
        if (key < a[mid]) {
            high = mid - 1;
            k = k-1;
        }else if (key > a[mid]){
            low = mid + 1;
            k = k-2; //
        }else{
            if (mid <= n) {
                return mid;
            }else{
                return n;
            }
        }
    }
    return 0;
}

文章永久链接:https://tech.souyunku.com/31402

未经允许不得转载:搜云库技术团队 » 顺序查找的几种方式

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们