顺序查找是最基本的查找算法,从表的开头或结尾依次对表中的元素进行对比,直到成功找到关键字或是将表中的所有元素对比一遍。
顺序查找的平均查找长度为
时间复杂度为O(n)
1 头文件
#ifndef HEAD_H
#define HEAD_H
#include<iostream>
#include<string.h>
typedef int Keytype;
typedef int otherdata;
typedef struct {
Keytype key;
otherdata otherinfo;
}ElemType;
typedef struct{ //顺序表
ElemType *R; // 存储空间的基地址
int length; //当前长度
}SSTable ; //SStable ST
//假设元素从ST.R[1]开始顺序向后存放数据
#endif // HEAD_H
2 实现方法
#include"head.h"
using namespace std;
//顺序查找
int Search_seq(SSTable ST,Keytype key){
//在顺序表中查找关键字等于key的值
for(int i = ST.length;i>=1;i--){
if(ST.R[i].key==key)return i;
}
return 0;
}
//设置检视哨的顺序查找
int Search_seq_key(SSTable ST,Keytype key){
//设置一个哨兵
ST.R[0].key = key;
int i;
for(i = ST.length;ST.R[i].key!= key;--i)
return i;
}
//折半查找(Binary Search)
int Search_Bin(SSTable ST,Keytype key){
//置查找区间
int low = 1;
int high = ST.length;
while(low<=high)
{
int mid = (low+high)/2;
if(key == ST.R[mid].key)return mid;
else if(key<ST.R[mid].key)high = mid-1;
else if(key>ST.R[mid].key)low = mid +1;
}
return 0;
}