无序线性搜索(Unordered Linear Search)

假定有一个元素顺序情况不明的数组。这种情况如果我们要搜索一个元素就要遍历整个数组,才能知道这个元素是否在数组中。

这种方法要检查整个数组,核对每个元素。下面是算法实现:

#include<stdio.h>

// a function to search "data" in an array "arr" of size "size"
// returns 1 if the element is present else 0
int unorderedLinearSearch(int arr[], int size, int data)
{
    int found_flag = 0;

    int i;
    for(i=0;i<size;i++)
    {
        //loop through the entire array and search for the element
        if(arr[i] == data)
        {
            // if the element is found, we change the flag and break the loop
            found_flag = 1;
            break;
        }
    }

    return found_flag;
}

//driver program to test the function
int main(void)
{
    int arr[10] = {2, 6, 4, 10, 8, 1, 9, 5, 3, 7};

    int to_search = 5;

    if(unorderedLinearSearch(arr,10,to_search))
        printf("FOUND");
    else
        printf("NOT FOUND");

    return 0;
}

时间复杂度(Time Complexity):O(n),这是遍历整个数组最差的情况。

空间复杂度(Space Complexity):O(1)。

时间: 2024-12-18 07:53:43

无序线性搜索(Unordered Linear Search)的相关文章

有序线性搜索(Sorted/Ordered Linear Search)

如果数组元素已经排过序(升序),那我们搜索某个元素就不必遍历整个数组了.在下面给出的算法代码中,到任何一点,假设当前的arr[i]值大于搜索的值data,就可以停止搜索了. #include<stdio.h> // a function to search "data" in an array "arr" of size "size" // returns 1 if the element is present else 0 int

[Algorithms] Refactor a Linear Search into a Binary Search with JavaScript

Binary search is an algorithm that accepts a sorted list and returns a search element from the list. It provides a dramatic performance boost over searching linearly through a list for an element. Let’s play around number of iterations required for e

Linear Search

Search I You are given a sequence of n integers S and a sequence of different q integers T. Write a program which outputs C, the number of integers in T which are also in the set S. Input In the first line n is given. In the second line, n integers a

搜索和搜索形式(SEARCHING and its forms)

什么是搜索? 在计算机科学中,搜索就是在一个事物的集合中找到具有特定特征的一项的过程.这些集合中的元素可能是排好序的数据库中的记录,简单数组中的数据,文件中的文本,树中的节点,几何图形中的点和边或者是其他搜索空间的元素. 搜索有什么作用? 搜索是计算机科学的核心算法之一.我们都知道现代的计算机存储了很多数据和信息,为了快速的获取我们所要的信息我们就需要高效的搜索算法.有一些数据组织方法可以加快搜索速度.也就是说,如果我们合理地将数据排好序,搜索就会变得很容易.排序是将数据按顺序存放的方法之一.我

MySQL:索引工作原理

为什么需要索引(Why is it needed)?当数据保存在磁盘类存储介质上时,它是作为数据块存放.这些数据块是被当作一个整体来访问的,这样可以保证操作的原子性.硬盘数据块存储结构类似于链表,都包含数据部分,以及一个指向下一个节点(或数据块)的指针,不需要连续存储. 记录集只能在某个关键字段上进行排序,所以如果需要在一个无序字段上进行搜索,就要执行一个线性搜索(Linear Search)的过程,平均需要访问N/2的数据块,N是表所占据的数据块数目.如果这个字段是一个非主键字段(也就是说,不

面试题整理 有经验自己的语言

4.谈谈你对JVM的理解? 答: Java语言的一个非常重要的特点就是与平台的无关性.而使用Java虚拟机是实现这一特点的关键.Java编译器只要面向JVM,生成JVM能理解的代码或字节码文件.Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行. JVM执行程序的过程 :I.加载.class文件   ,II.管理并分配内存  ,III.执行垃圾收集 JRE(java运行时环境)由JVM构造的java程序的运行环境 1.SpringMVC的原理以及返回数

c++_benchMark_vector_list_deque

title: c++_benchMark_vector_list_deque date: 2015-08-01 22:32:39 作者:titer1 + ZhangYu 出处:www.drysaltery.com + csdn博客同步 联系:1307316一九六八(仅接受短信) 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处. 翻译来源:c++ benmark series c++_benc

Line Search and Quasi-Newton Methods 线性搜索与拟牛顿法

Gradient Descent 机器学习中很多模型的参数估计都要用到优化算法,梯度下降是其中最简单也用得最多的优化算法之一.梯度下降(Gradient Descent)[3]也被称之为最快梯度(Steepest Descent),可用于寻找函数的局部最小值.梯度下降的思路为,函数值在梯度反方向下降是最快的,只要沿着函数的梯度反方向移动足够小的距离到一个新的点,那么函数值必定是非递增的,如图1所示. 梯度下降思想的数学表述如下: b=a−α∇F(a)⇒f(a)≥f(b)(1)(1)b=a−α∇F

【LeetCode】Search Insert Position (2 solutions)

Search Insert Position Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You may assume no duplicates in the array. Here are few examples.[1,3,5,