1. 程式人生 > >查詢演算法:查詢所需數字的位置

查詢演算法:查詢所需數字的位置

1.折半查詢:

#include<string.h>  // 需要引用的標頭檔案
int search (int a[],int x) // 陣列a[]   要查詢的數字 x
{
    int low,mid,high,n;
    n=strlen(a);
    low=0;
    high=n-1;
    while (low<=high)
    {
        mid=(low+high)/2;
        if (a[mid]==x)
            return mid+1;
        else if (a[mid]>x)
            high=mid-1;
        else low=mid+1;
    }
    return -1;
}

2.順序查詢:

#include<string.h>
int search (int a[],int x)
{
    int i,f=-1,n;
    n=strlen(a);
    for (i=0;i<a;i++)  //  逐步判斷
        if (x==a[i])
    {
        f=i+1;
        break;
    }
    return (f);
}

3.分塊查詢

int k;

k=search(a[],a);

struct index{
int key;
int end;
int start;
} index[4];

int j=-1;
for (int i=0;i<3;i++)
{
    index[i].start=j+1;
    j+=1;
    index[i].end=j+4;
    j+=4;
    index[i].key=a[j];
}

int search (int a[],int key)
{
    int i,j;
    i=0;
    while (i<3&&key>index[i].key)
        i++;
    if (i>=3)
        return -1;
    j=index[i].start;
    while (j<index[i].end&&a[j]!=key)
        j++;
    if (j>index[i].end)
        j=-1;
    return j;
}