数据结构->9.1顺序查找和二分查找

数据结构顺序表查找(C语言版) 折半查找算法 顺序表 数据结构顺序表查找(C语言版) 立即下载

1.代码实现

代码如下(示例):


#include <stdio.h>
#include <malloc.h>

typedef struct Node {
	int key;
	char value;
}Node, * NodePtr;

typedef struct SequentialList {
	int lenth;
	NodePtr elements;
}SequentialList, * ListPtr;

ListPtr initList(int* paraKeys, char* paraValues, int paralenth) {
	int i;
	ListPtr resultPtr = (ListPtr)malloc(sizeof(SequentialList));
	resultPtr->lenth = paralenth;
	resultPtr->elements = (NodePtr)malloc((paralenth + 1) * sizeof(Node));
	for (int i = 0; i < paralenth; i++) {
		resultPtr->elements[i].key = paraKeys[i];
		resultPtr->elements[i].value = paraValues[i];
	}

	return resultPtr;
}

char sequentialSearch(ListPtr paraListPtr, int paraKey) {
	int i=0;
	paraListPtr->elements[paraListPtr->lenth].key = paraKey;
	paraListPtr->elements[paraListPtr->lenth].value = 'x';

	while (paraListPtr->elements[i].key != paraKey) {
		i++;
	}

	return paraListPtr->elements[i].value;
}

void sequentialSearchTest() {
	int tempUnsortedKeys[] = { 4, 5, 3, 6, 10, 7, 1, 9 };
	char tempContents[] = { 'h', 'e', 'l', 'o', 'w', 'r', 'd', '!' };
	ListPtr tempListPtr = initList(tempUnsortedKeys, tempContents, 8);

	printf("Search result of 10 is: %c\r\n", sequentialSearch(tempListPtr, 10));
	printf("Search result of 5 is: %c\r\n", sequentialSearch(tempListPtr, 5));
	printf("Search result of 4 is: %c\r\n", sequentialSearch(tempListPtr, 4));
	printf("Search result of 2 is: %c\r\n", sequentialSearch(tempListPtr, 2));
}

char binarySearch(ListPtr paraListPtr, int paraKey) {
	int tempLeft = 1;
	int tempRight = paraListPtr->lenth;
	int tempMiddle = (tempLeft + tempRight) / 2;

	while (tempLeft <= tempRight) {
		tempMiddle = (tempLeft + tempRight) / 2;
		if (paraListPtr->elements[tempMiddle].key == paraKey) {
			return paraListPtr->elements[tempMiddle].value;
		}
		else if (paraListPtr->elements[tempMiddle].key < paraKey) {
			tempLeft = tempMiddle + 1;
		}
		else {
			tempRight = tempMiddle - 1;
		}
	}

	return 'x';
}

void binarySearchTest() {
	int tempUnsortedKeys[] = { 1, 3, 4, 5, 6, 7, 9, 10 };
	char tempContents[] = { 'h', 'e', 'l', 'o', 'w', 'r', 'd', '!' };
	ListPtr tempListPtr = initList(tempUnsortedKeys, tempContents, 8);

	printf("Search result of 10 is: %c\r\n", binarySearch(tempListPtr, 10));
	printf("Search result of 5 is: %c\r\n", binarySearch(tempListPtr, 5));
	printf("Search result of 4 is: %c\r\n", binarySearch(tempListPtr, 4));
	printf("Search result of 2 is: %c\r\n", binarySearch(tempListPtr, 2));
}

int main() {
	printf("\r\n------sequentialSearchTest------\r\n");
	sequentialSearchTest();

	printf("\r\n------binarySearchTest------\r\n");
	binarySearchTest();
	return 1;
}

2.读入数据

代码如下(示例):


------sequentialSearchTest------
Search result of 10 is: w
Search result of 5 is: e
Search result of 4 is: h
Search result of 2 is: x

------binarySearchTest------
Search result of 10 is: !
Search result of 5 is: o
Search result of 4 is: l
Search result of 2 is: x

---

# 总结
顺序查找:
1.点睛之笔:多开辟一个空间,赋值-1,‘x’,所以无论表中是否存在需要查询的元素,结果总是不会越界。
2.所以这个节点可以加在开头,也可以加在结尾,此代码为在结尾添加了一个哨兵。
二分查找:
设立左右“指针”,每次取中间值来查询key,如果中间值比key大,就右“指针”=middle-1;否则相反为左“指针”=middle+1;直到查询到指定元素或者哨兵。
数据结构顺序查找代码 顺序查找源代码 #include #include typedef struct{ char *elem; int length; }SSTable; char key; 立即下载

相关推荐

数据结构顺序查找

编程实现有n个元素的有序顺序表上的二分查找算法。查找若成功,输出其位置,还需输出查找次数;若失败,输出提示信息,还需输出比较次数。

数据结构-查找(顺序查找与二分查找的讲解与代码实现)

前提条件是有序序列,即每次从序列的中间开始于所要查找的元素比较,如果中间元素小于key(要查找的元素)则从中间元素的右边查找(以中间元素+1为首元素,尾元素不变,再去求mid于key相比)。顺序查找概念:从表的另一端开始,一次将记录的关键字和给定值进行比较,若某个记录的关键字和给定的值相等,则查找成功,反之则查找失败。查找1的次数为1概率为1/3,2为两次概率1/3,3的次数为3概率1/3。所以顺序查找的ASL为:n*(n+1)/2*(1/n)=(n+1)/2。每次查找的概率为1/n。

weixin_73612682的博客 1698

微信4.1.5.16升级后,你的自动化脚本失灵了?手把手教你用C#让UI树“复活”

微信4.1.5.16版本更新导致自动化脚本失效?本文深入解析微信UI树隐藏的原因,并提供C#实战解决方案,通过UIAutomation技术恢复UI树结构,帮助开发者重新实现自动化操作。涵盖技术原理、代码实现及优化策略,适合RPA开发者和自动化脚本编写者参考。

weixin_30879169的博客 520

数据结构例题代码及其讲解-查找和排序

数据结构例题代码及其讲解-查找与排序

knighthood2001 1492

Spring Boot 3.5.4 + LangChain4j实战:用Milvus搭建企业级RAG问答系统(附阿里百炼API配置)

本文详细介绍了如何利用Spring Boot 3.5.4、LangChain4j与Milvus构建企业级RAG问答系统。内容涵盖从架构设计、阿里百炼API安全配置、Milvus部署优化,到RAG检索、会话管理等核心实现,并提供了生产级API设计、监控集成及性能优化等实战经验,旨在帮助开发者打造高可用、可维护的Java AI应用。

weixin_29054399的博客 610

Tomcat漏洞——弱口令爆破

靶机:CentOS7 IP:192.168.100.40。攻击机:kali IP:192.168.100.60。版 权 声 明:本博客所有文章除特别声明外,均采用。文章版权归作者所有,未经允许请勿转载!作 者:PeiyuJue。

weixin_57379923的博客 911

【数据结构】编程实现有序顺序表的顺序查找和二分查找算法。C++版

一、实验目的: 熟悉各种查找算法及其复杂性,能够根据实际情况选择合适的存储结构。二、实验要求: 算法完善,考虑时间复杂度。三、实验内容: 编程实现有序顺序表的顺序查找和二分查找算法。 代码段 #include <iostream> using namespace std; #define MAXSIZE 100 typedef int KeyType; //数据元素类型定义 typedef struct{ KeyType key;//数据域 }ElemType; //顺序表的定.

qq_52978240的博客 6339

别再只调A*算法了!聊聊ROS机器人导航中,OpenCV视觉信息如何与激光雷达数据“打配合”

本文探讨了ROS机器人导航中激光雷达与OpenCV视觉融合的实战策略,揭示了如何通过多模态感知提升导航精度。文章详细介绍了视觉特征到代价地图的转化方法、系统级挑战的工程解决方案,以及融合感知下的路径规划进化,帮助开发者优化机器人导航系统。

weixin_29278805的博客 226

数据结构查找排序代码部分总结

数据结构排序和查找算法

kanzwienhoff的博客 1832

构建高可用CephFS NFS网关:NFS-Ganesha与RADOS集群的深度整合

本文详细介绍了如何构建高可用的CephFS NFS网关,通过NFS-Ganesha与RADOS集群的深度整合,实现高效文件共享。文章涵盖核心架构、部署实战、性能调优及避坑指南,帮助用户解决Ceph客户端兼容性问题,提升存储访问效率。特别强调高可用设计,确保服务稳定性,适用于金融、电商等高要求场景。

weixin_26976635的博客 254

基于AOD-Net与GAN的深度学习去雾算法开发

本文提出一种结合AOD-Net与GAN的深度学习去雾算法。通过改进的AOD-GAN网络架构,集成风格迁移模块,设计包含对抗损失、内容损失和风格损失的复合目标函数。实验表明,该方法在PSNR(24.67)、SSIM(0.92)和FID(32.15)指标上优于传统方法,实现了端到端的物理模型引导图像去雾。未来将优化多尺度特征融合和轻量化部署。

huanghm88的专栏 594

数据结构_顺序查找(C语言)

从表的一端开始,依次将表中的关键字和给定的值进行比较,若表中的关键字和给定的值相等,则查找成功,反之查找失败。

小黯 1万+

计算机视觉教程2-3:图解双线性插值算法&最近邻插值算法

提出此算法的背景是基于图片的缩放,在图片缩放的过程中,实质上就是将原图像像素矩阵像素值,填到目标图像像素矩阵中,目标图像像素矩阵可能比原图像像素矩阵大(图片放大),也可能小(图片缩小)。我们假设图片的宽(WidthWidthWidth)和高(HeightHeightHeight)是按同比例缩放的,那么 srcXsrcWidth=dstXdstWidth\frac{srcX}{srcWidth}= \frac{dstX}{dstWidth}srcWidthsrcX​=dstWidthdstX​ ...

FRIGIDWINTER的博客 7286

数据结构中的查找算法详解:顺序查找与二分查找

查找算法是用于在数据集中定位特定元素的位置的算法。查找是计算机科学中一项基本操作,几乎在所有应用程序中都需要使用。例如,数据库查询、信息检索、字典查找等都涉及到查找操作。查找算法可以根据不同的需求和数据结构选择不同的实现方法,以达到高效、准确的目的。

TENET123的博客 2179

[Dify]-进阶5- 使用 Dify 构建多轮对话的客服机器人

本文介绍了如何利用Dify平台构建智能客服系统,重点阐述了ChatFlow框架的应用。系统支持多轮对话、业务接口集成和话术策略管理,具备订单查询、退货申请等核心功能。通过Classifier节点实现意图识别,借助Router节点分流处理流程,并结合API插件实现业务数据对接。文章还提供了部署调试、会话优化和监控分析的具体方法,强调模块化设计和插件化集成的重要性,为构建功能完善的智能客服系统提供了完整解决方案。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1662

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

查找 | 顺序查找、分块查找、二分查找、哈希查找 | 牛客刷题笔记

顺序查找的时间复杂度为o(n)分块查找的时间复杂度为o(log2n)到o(n)之间二分查找的时间复杂度为o(log2n)哈希查找的时间复杂度为o(1)斐波纳切黄金分割查找折半查找斐波纳切黄金分割查找折半查找同一类型9。

qq_44250700的博客 7809

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++数据结构——顺序表的查找(简单顺序查找、有序表的二分查找、索引顺序的查找)

一:简单顺序查找 二:有序表的二分查找 三:索引顺序的查找

eyes++的博客 5144

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

顺序查找和二分查找

顺序查找和二分查找 说明:代码使用codeblocks编译,C++实现,个人编写,如有错误,还望指正。 二分查找要求输入的数据是有序的。如果有重复的元素,查找到的未必是最前面的。 #include &lt;iostream&gt; using namespace std; //顺序查找 //找到返回下标,没找到返回-1; int order_search(int array[],int l...

welcom to Rita's world 1217

数据结构与算法Python版 顺序查找与二分查找

介绍了顺序查找 Sequential Search和二分查找Binary Search,以及二分查找的算法分析。

分享、交流、合作 898

Python数据结构9:查找,顺序查找解法,二分查找(和递归算法求解)

顺序查找的代码和解法 二分查找的代码和解法 参考文献 本文的知识来源于B站视频 【慕课+课堂实录】数据结构与算法Python版-北京大学-陈斌-字幕校对-【完结!】,是对陈斌老师课程的复习总结。 ...

YangStudent的博客 1421

查找——顺序查找、二分查找、散列查找

二分查找 条件1:经过排序的数据集合 条件2:只适合于顺序存储的数据结构 设有数据集合 {5,13,17,42,46,55,70,94} 元素 5 13 17 42 46 55 70 94 下标 0 1 2 3 4 5 6 7 表示 low high 查找94 (0+7 )/ 2 = 3 ----> a[3] < key (4+7) / 2 ...

mango660的博客 1564

数据结构-查找-顺序查找+二分查找

查找 定义 查找表:是由一组记录组成的表或文件,而每个记录由若干个数据项组成,并假设每个记录都有一个能唯一标识该记录的关键字。 简单点来说就是:再数据项(可以是数据,也可以是线性表)中找到这个数据。 一般来说查找分为内查找与外查找,我们这里主要研究内查找。 若在查找的同时对表做修改操作(如插入和删除),则相应的表称之为动态查找表;否则称之为静态查找表。 ​ 查找运算时间主要花费在关键字比较上,通常把查找过程中执行的关键字平均比较个数(称为平均查找长度)作为衡量一个查找算法效率优劣的标准。平

wh52013141314的博客 1151

C语言:顺序查找和二分查找

任务代码: 顺序查找元素: #include #define SIZE 10 int main() { int a[SIZE]={1,2,3,4,5,6,7,8,9,10}; int index=-1;//如果末尾没有找到,默认函数为=-1 int i,number; printf("请输入要查找的数据:"); scanf("%d",&number)

Geek宝宝的努力! 2904

【数据结构与算法】顺序查找、折半查找、分块查找

顺序查找,又叫线性查找。适用于线性表。它的核心思路是从线性表的一端开始,逐个检查关键字是否满足给定条件。若满足条件,则返回下标。若已经查找到了线性表的另一端,但还没有找到符合给定条件的元素,则返回查找失败。

DreamSuif的博客 1484

数据结构与算法之二分查找及场景应用(Java)

查找:在一些数据元素中,通过一定的方法找出与给定关键字相同的数据元素的过程列表查找(线性表查找):从列表中查找指定的元素输入:列表,待查找元素输出:元素下标(未找到元素时一般返回-1)

SheepYangStudy的博客 1869

C语言-顺序查找和二分查找

顺序查找 #include <stdio.h> typedef void (*call_back)(int); void printIndex(int index) { printf("%d\t",index); } int linear(int *array, int length, int target, call_back ptr) { int count = 0...

m0_37051568的博客 899
上一篇: 数据结构->9.2哈希表
下一篇: 7.1图的遍历
dev_cc_
博客等级 码龄3年 41粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值