三少爷

专注~~~

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  11 随笔 :: 0 文章 :: 0 评论 :: 3085 阅读
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
#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");
}

  

posted on   三少_爷  阅读(160)  评论(0编辑  收藏  举报
编辑推荐:
· 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)
点击右上角即可分享
微信分享提示