查詢演算法:查詢所需數字的位置
阿新 • • 發佈:2018-11-21
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; }