#include<stdio.h> #include<stdlib.h> #define EQ(a,b) ((a) == (b)) #define LT(a,b) ((a) < (b)) #define LE(a,b) ((a) <= (b)) typedef struct { int key; int data; }SElemType; typedef struct { SElemType *elem; int length; }SSTable; SSTable * create( int n) { SSTable *sst = (SSTable *) malloc ( sizeof (SSTable)); int x; sst->elem = (SElemType*) malloc ( sizeof (SElemType) * n); sst->length = n; for ( int i = 1; i <= n ; i++) { scanf ( "%d" ,&x); sst->elem[i].data = x; sst->elem[i].key = i; } sst->elem[0].key = 0; sst->elem[0].key = 0; return sst; } int search(SSTable * st, int key) { int i; st->elem[0].key = key; for ( i = st->length ;!EQ(st->elem[i].key,key);--i); return i; } int searchBin(SSTable * st, int key) { int low =1,high = st->length ; int mid=0; while (low <= high) { mid = (low + high)/2; if (EQ(key,st->elem[mid].key)) return mid; else if (LT(key,st->elem[mid].key)) high = mid -1; else low = mid +1; } return 0; } void main() { printf ( "Input number of element:\n" ); int n; scanf ( "%d" ,&n); SSTable * sst = create(n); printf ( "the search table element are:\n" ); for ( int i = 1;i<=n;i++) { printf ( "%-5d" ,sst->elem[i].data); } printf ( "\nposition of key i is:\n" ); printf ( "%d\n" ,search(sst,3)); printf ( "\nposition of key i (binary search) is:\n" ); printf ( "%d\n" ,searchBin(sst,3)); system ( "pause" ); } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· 程序员常用高效实用工具推荐,办公效率提升利器!
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)