6.2 顺序查找与折半查找
2021/5/1 10:25:25
本文主要是介绍6.2 顺序查找与折半查找,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
#include <stdio.h> #include <stdlib.h> #include <time.h> typedef int ElemType; typedef struct{ ElemType *elem;//整型指针 int TableLen; }SSTable; int Search_Seq(SSTable ST,ElemType key) { ST.elem[0]=key; int i; for(i=ST.TableLen-1;ST.elem[i]!=key;--i); return i; } void ST_Init(SSTable &ST,int len) { ST.TableLen=len+1;//多申请了一个位置 ST.elem=(ElemType *)malloc(sizeof(ElemType)*ST.TableLen); int i; srand(time(NULL));//随机数生成 for(i=0;i<ST.TableLen;i++) { ST.elem[i]=rand()%100; } } void ST_print(SSTable ST) { for(int i=0;i<ST.TableLen;i++) { printf("%3d",ST.elem[i]); } printf("\n"); } //时间复杂度 logn int Binary_Search(SSTable L,ElemType key) { int low=0,high=L.TableLen-1,mid; while(low<=high) { mid=(low+high)/2; if(L.elem[mid]==key) return mid; else if(L.elem[mid]>key) high=mid-1; else low=mid+1; } return -1; } int compare(const void *left,const void *right) { return *(ElemType*)left-*(ElemType*)right; } //《龙哥带你撸代码》课程 //顺序查找 与 折半查找 int main() { SSTable ST; ElemType key; int pos;//存储查询元素的位置 ST_Init(ST,10); ST_print(ST); printf("请输入要搜索的key值:\n"); scanf("%d",&key); pos=Search_Seq(ST,key); if(pos) { printf("查找成功 位置为 %d\n",pos); }else{ printf("查找失败\n"); } qsort(ST.elem,ST.TableLen,sizeof(int),compare);//qsort实现的是快排 ST_print(ST); printf("二分查找,请输入要搜索的key值:\n"); scanf("%d",&key); //有序数组 pos=Binary_Search(ST,key); if(pos!=-1) { printf("查找成功 位置为 %d\n",pos); }else{ printf("查找失败\n"); } system("pause"); }
这篇关于6.2 顺序查找与折半查找的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)