in

在C中进行线性搜索的例子 线性搜索是一种简单的搜索算法,用于在一个数组中找到特定元素的位置。它从数组的第一个元素开始比较,依次向后查找,直到找到目标元素或搜索完整个数组。 以下是C语言中使用线性搜索的一个例子: “`c #include int linearSearch(int arr[], int n, int target) { for (int i = 0; i < n; i++) { if (arr[i] == target) { return i; } } return -1; } int main() { int arr[] = {2, 4, 6, 8, 10}; int n = sizeof(arr) / sizeof(arr[0]); int target = 8; int result = linearSearch(arr, n, target); if (result == -1) { printf("元素 %d 未在数组中找到n", target); } else { printf("元素 %d 在数组中的索引位置是 %dn", target, result); } return 0; } “` 此代码中的linearSearch函数使用循环遍历数组,如果找到目标元素,则返回其索引位置。如果未找到目标元素,则返回-1。在主函数中,我们使用给定的数组和目标元素调用linearSearch函数,并根据返回的结果打印相应的消息。 这是一个简单的线性搜索的示例,它可以用作其他更复杂搜索算法的基础。

在今天的编程世界中,尤其是随着深度学习算法的兴起,线性搜索对每个程序员来说都是必学的。这个适合初学者的工具为开发打开了新的可能性,而且非常容易理解!

线性搜索在许多现代编程项目中都有应用,我们希望你学习基本原理,以便在阅读完本文后可以在你的项目中使用它。

顺便说一下,即使我们今天使用的是c语言,线性搜索在所有编程语言中都有应用,所以请随意将示例转换为你熟悉的语言。话不多说,让我们开始吧!

什么是线性搜索?

搜索算法用于检查特定元素是否存在于某种数据结构中,例如数组或列表。如果目标元素存在,则可以识别它并继续执行进一步的逻辑操作。

搜索算法可以广泛分为两类。顺序搜索算法是最简单的,因为它们逐个检查数组的每个元素(例如线性搜索)。

我们还有区间搜索算法,用于处理排序的数据结构,并且比顺序搜索算法更快更高效。

例如,二分搜索通过重复将数组或其他类型的数据排列一分为二,直到找到目标。

在使用编程中使用的各种搜索算法中,线性搜索是最有用的之一。正如你将在下一节中了解到的,它的可用性和复杂性之比非常高。

线性搜索如何工作?

我们现在大致了解了线性搜索的作用,但事实上我们只是触及了表面。在本节中,我们将解释此代码的语法是如何工作的,以便您可以更直观地了解该算法的内部工作原理。

要开始使用线性搜索,您首先必须输入将要搜索的元素。然后,从第一个元素开始,将使用某种条件检查列表中的每个元素。

如果找到该元素,则可以返回其值和索引位置。如果没有找到,则返回“-1”,表示没有与我们所寻找的元素相对应的元素。让我们看一个快速的示例。

#include  

int search(int arr[], int n, int x) 
{
     int i; 
     for (i = 0; i < n; i++) 
     if (arr[i] == x) 
     return i;
return -1; 
}

在上面的示例中,首先,我们编写了一个条件,用于在arr[]中搜索x。如果找到,该条件返回索引值;如果未找到,则返回-1。现在让我们在此基础上构建一个功能性的示例。

功能性语法示例

我们将向我们的示例添加第二个部分,并希望您密切注意它们之间的关系。

#include  

int search(int arr[], int n, int x) 
{
     int i; 
     for (i = 0; i < n; i++) 
     if (arr[i] == x) 
     return i;
 return -1; 
} 

int main(void) 
{ 
     int arr[] = { 2, 3, 4, 10, 40 }; 
     int x = 10; 
     int n = sizeof(arr) / sizeof(arr[0]); 
     int result = search(arr, n, x); 
     (result == -1) 
     ? printf("element is not present in array") 
     : printf("element is present at index %d", result);
     return 0; 
}

现在我们通过添加另一个条件部分扩展了功能。在这个部分中,我们定义了arr []的值,即我们想要找到的数字,以及数组的长度。

最后,如果找到目标值,我们将其打印在其对应的索引值旁边。如果找不到,则打印一个字符串,通知目标值无法找到。让我们看看这段代码的输出:

线性搜索的一个功能示例。

©jingzhengli.com

现在,让我们看看如果将目标值更改为整数2会发生什么:

使用“2”作为输入值的线性搜索。

©jingzhengli.com

所以,虽然你可以显然地玩弄代码的第二部分,并使其打印一个不同的句子,但在大多数情况下,它就是这么简单!

时间复杂度解释

我们之前提到,间隔搜索算法比线性搜索更快,更高效。但是,为什么呢?

这完全归结于时间复杂度,即搜索操作完成所花费的时间。时间复杂度将根据数组的长度和我们正在进行的操作类型而变化。

间隔搜索的逻辑(我们将在另一篇文章中介绍)总是更快。这意味着尽管线性搜索的时间复杂度(定义为o(n))比二分搜索慢,但两者都会返回相同的值。

在理想环境中使用线性搜索,我们将在数组的第一个位置找到目标,结果是o(1)的时间复杂度。最坏情况下的时间复杂度将等于数组的长度,意味着目标将在最后一个位置。

如果我们期望的目标位置可以随机变化,你可以看到线性搜索是一种非常低效的方法。

你现在应该明白线性搜索不适用于处理大量数据。因此,相反地,当处理需要简单解决方案的小数据样本时,线性搜索是一个很好的选择。

线性搜索有哪些优势?

即使线性搜索比其他搜索算法更慢,但它确实具有使它成为程序员的独特选择的一些优点。

例如,线性搜索可以与任何类型的数据集合一起使用。无论它是排序还是未排序的,线性搜索都可以找到我们的目标值,无论我们的集合多么混乱。

此外,目标值可以是任何类型的数据,例如字符串或布尔值。让我们记住我们的代码示例:

#include  
int search(int arr[], int n, int x) 
{
     int i; 
     for (i = 0; i < n; i++) 
     if (arr[i] == x) 
     return i;
     return -1; 
}

看到这个逻辑如何适用于任何数据数组,即使它完全是未排序和混乱的吗?线性算法会检查集合中的每个可能性,直到元素匹配我们的目标。让我们重新定义我们的数组,使其更随机。

线性搜索与更随机结构化数组一起工作的示例。

©jingzhengli.com

即使我们的数组是随机组织的,线性搜索也会在足够的时间内找到我们的目标。而且,使用间隔搜索算法进行相同操作将是不可能的,因为它无法处理未排序的数据结构。

所以,尽管线性搜索在表面上看起来效率低下,但实际上是一种非常高尚的算法。

结论:c中的线性搜索示例

让我们回顾一下!我们已经学习了什么是线性搜索以及我们可以用它做什么。我们通过一个巨大的代码示例回顾了它的基本特性。此外,我们讨论了它的最佳用途和缺点。

我们还稍微深入了一下时间复杂度的概念,它是如何工作以及如何定义任何搜索算法的效率。现在,您可以决定哪种搜索算法最适合您的特定代码。

我们建议您将这些示例保存在手边,需要时随时查看。实际上,您可以将我们的示例复制粘贴到c解释器中,并立即开始使用它。

请记住,您始终可以与您偏好的任何在线资源一起使用 c 的官方文档作为参考。

Written by