如何搜索:关键词详解与数据元素标识" - 关键词:就是我们用来定位数据库或信息档案中特定数据项的值,比如学生的个人信息可能包括:学号、名字、性别、年纪、地址和联系方式等。其中,一些关键词能精确地确定一条记录,比如学号,因为每个学生的学号都是独一无二的;但像姓名这样,由于可能存在同名情况,就无法单独用来唯一标识一条记录,这类关键词被称为主关键词。相反,那些不能唯一确定一条记录的关键词,则被称为辅助关键词或从关键词。
#include <stdio.h>
#include <stdlib.h>
#define MAX_KEY 100;
int search1(int k[],int n,int key)
{
int i;
k[n]=key;
for (i=0;key!=k[i];i++)
return i<n?i:-1;
}
int search2(int k[],int n,int key)
{
int i;
k[n]=MAX_KEY;
for (i=0;key>k[i];i++);
if (i<n&&k[i]==key) return i;
return -1;
}
int bin_search(int k[],int n,int key)
{
int low=0,high=n-1,mid;
while (low<=high) {
mid=(low+high)/2;
if (key==k[mid]) return mid;
if (key>k[mid]) low=mid+1;
else high=mid-1;
}
return -1;
}
int ins_search(int k[],int n,int key)
{
int low=0,high=n-1,pos;
while (low<=high) {
pos=(key-k[low])/(k[high]-k[low])*(high-low)+low;
if (key==k[pos]) return pos;
if (key>k[pos]) low=pos+1;
else high=pos-1;
}
return -1;
}
int main(int argc, char *argv[])
{
int a[]={3,4,7,20,45,78,90},i;
i= bin_search(a,7,45);
printf("The n is %d\n",i);
system("PAUSE");
return 0;
}
上一篇: 为何准备好的商标名称总是无法成功注册
下一篇: 6道关于MySQL的测验题目