C 语言插值查找2024 年 8 月 28 日 | 3 分钟阅读 在本文中,我们将讨论 C 语言中的插值搜索及其情况、示例和输出。 当排序数组中的值均匀分布时,插值搜索比二分搜索更受欢迎。对已知数据点的离散集进行插值以创建落在其范围内的新数据点。二分搜索总是检查中间元素。另一方面,插值搜索的位置将由所搜索键的值决定。例如,如果键值更接近最后一个元素,插值搜索可能会从末尾开始搜索。 如果数组中存在一个元素,我们必须编写一个 C 程序,使用插值搜索算法来确定其在整数数组中的位置。 插值搜索的几种情况插值搜索有几种情况。这些情况如下: 1. 平均情况插值搜索通常执行 (log(log n)) 次比较,其中 n 是元素的总数。 示例 如果输入数组包含以下数据:1, 2, 3, 4, 5, 6,并且要搜索的元素是元素 6,则预期结果将是位置 6。 平均情况下的时间复杂度是 O(log(log n))。 2. 最佳情况如果所寻找的对象是数组的中间元素,插值搜索只进行一次比较并返回位置。 示例 如果输入数组包含数据 “2, 4, 6, 8, 10,”,并且要搜索的元素是 “6”,则预期输出将是位置 3。最佳情况下的时间复杂度是 O(1)。 示例代码 这是使用整数数组实现插值搜索的 C 程序代码。使用 GCC 编译器,该程序已成功编译和测试。下面还给出了程序的输出。 争议解决
代码 输出 测试用例 1 Enter total elements (num < 200) :5 Enter 5 Elements in ascending order: 1 2 3 4 5 Search For : 4 Element 4 found at position 4 测试用例 2 Enter total elements (num < 200) :6 Enter 5 Elements in ascending order: 1 2 3 4 5 6 Search For: 2 Element 2 found at position 2 程序说明
下一个主题C 语言中的 strdup() 函数 |
简介:在本文中,我们将讨论随机文件访问。C语言的随机访问文件使我们能够在不先读取或写入之前所有数据的情况下,读取或写入磁盘文件中的任何数据。我们可以轻松地在...中查找数据。
阅读9分钟
了解 for 循环和 while 循环之间的区别 C++ 中的迭代语句,例如 for 循环、while 循环和 do-while 循环,允许重复执行一组指令,直到条件为真,然后在条件为假时终止。
7 分钟阅读
介绍:C标准库中的strrchr()方法在字符串中查找给定字符的最后一次出现。该函数返回指向字符串中字符最后一次出现的指针。如果找不到该字符,该函数将返回空指针...
阅读 3 分钟
如果列表中的内容按顺序排列,则将项目分成两部分,两侧具有相等数量的项目,这称为中位数。偶数个项目有两个中间值,而奇数个项目有一个...
5 分钟阅读
段错误是 C 语言中的一种错误,当程序尝试访问其未授权的内存地址时发生。这通常发生在程序尝试使用未分配的内存或已分配但不再有效的内存时……
阅读 4 分钟
在本文中,您将学习如何用 C 语言创建一个计算电费的程序。代码 #include <stdio.h> #define UNIT_RATE 7.5 // 每消耗单位的费率 #define TAX_RATE 0.1 // 税率 //计算账单金额的函数 float calculateBill(int units) { float billAmount, taxAmount; ...
阅读 3 分钟
概念编译器是软件工具,可将一种编程语言的源代码翻译成汇编代码或字节码。通常,源代码是用高级、人类可读的语言编写的,包括 Java 和 C。我们将看一些最好的 C 编译器...
阅读 4 分钟
概念 在C编程语言中,使用printf()函数在输出屏幕上显示(“字符、字符串、浮点数、整数、八进制和十六进制值”)。我们应用printf()函数以及%d格式说明符来显示整型变量的值。看一下...
阅读 3 分钟
C 是一种以低级控制和效率而闻名的编程语言。C 具有广泛的字符串操作函数,可用于执行诸如字符串比较、连接和复制等操作。其中一个关键函数是 Strcmpi(),它允许进行不区分大小写的比较...
阅读 3 分钟
在本文中,我们将讨论 C 中的 atoi() 函数及其示例。什么是 Atoi()?atoi() 函数将字符字符串转换为整数值。输入字符串是可能转换为返回类型数值的字符字符串……
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India