实验11 静态查找
代码
#include <iostream>
using namespace std;
#define MAXSIZE 100
struct ElemType
{
int key;
};
struct SSTable
{
ElemType *R;
int length;
};
void InitSSTable(SSTable &ST)
{
ST.R = new ElemType[MAXSIZE];
ST.length = 0;
if (!ST.R)
{
cout << "初始化错误" << endl;
exit(-1);
}
}
void DestroySSTable(SSTable &ST)
{
delete[] ST.R;
}
void InsertSSTable(SSTable &ST)
{
for (int i = 0; i < MAXSIZE; i++)
ST.R[i].key = i;
ST.length = MAXSIZE;
}
void InsertSSTable2(SSTable &ST)
{
for (int i = 1; i < MAXSIZE; i++)
ST.R[i].key = i;
ST.length = MAXSIZE - 1;
}
int SeqSearch(SSTable &ST, int key)
{
for (int i = ST.length; i >= 1; --i)
{
if (ST.R[i].key == key)
return i;
}
return 0;
}
int SeqSearchWithSentry(SSTable &ST, int key)
{
ST.R[0].key = key;
int i = ST.length;
while (ST.R[i].key != key)
i--;
return i;
}
int BinarySearch(SSTable &ST, int key)
{
int low = 1, high = ST.length;
int mid;
while (low <= high)
{
mid = (low + high) / 2;
if (key == ST.R[mid].key)
return mid;
else if (key < ST.R[mid].key)
high = mid - 1;
else
low = mid + 1;
}
return 0;
}
void ShowSearchResult(int result, int testkey)
{
if (result == 0)
cout << "未找到" << testkey << endl;
else
cout << "找到" << testkey << "位置为" << result << endl;
}
int main()
{
SSTable ST;
int testkey1 = 7;
int testkey2 = 200;
InitSSTable(ST);
cout << "-------------------1.顺序查找-------------------" << endl;
InsertSSTable(ST);
ShowSearchResult(SeqSearch(ST, testkey1), testkey1);
ShowSearchResult(SeqSearch(ST, testkey2), testkey2);
cout << "-------------------2.带监视哨的顺序查找----------" << endl;
InsertSSTable2(ST);
ShowSearchResult(SeqSearchWithSentry(ST, testkey1), testkey1);
ShowSearchResult(SeqSearchWithSentry(ST, testkey2), testkey2);
cout << "-------------------3.折半查找--------------------" << endl;
InsertSSTable(ST);
ShowSearchResult(BinarySearch(ST, testkey1), testkey2);
ShowSearchResult(BinarySearch(ST, testkey2), testkey2);
DestroySSTable(ST);
}
截图
![](https://img2020.cnblogs.com/blog/1824307/202012/1824307-20201201164209451-94069242.png)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!