• 无序线性搜索(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)。

  • 相关阅读:
    P2018 消息传递[dp]
    P1436 棋盘分割[dp]
    一条线段引发的思考
    浅谈树上差分
    P2680 运输计划[二分+LCA+树上差分]
    P1600 天天爱跑步[桶+LCA+树上差分]
    P4560 [IOI2014]Wall 砖墙
    P1311 选择客栈[模拟]
    P1314 聪明的质监员[二分答案]
    Linux snmp导入MIB库
  • 原文地址:https://www.cnblogs.com/programnote/p/4719119.html
Copyright © 2020-2023  润新知