线性搜索数组

Posted

技术标签:

【中文标题】线性搜索数组【英文标题】:Linear search arrays [closed] 【发布时间】:2011-03-01 03:44:32 【问题描述】:

如何从 C 中的线性搜索中打印多个搜索?

for (i=0; i < index; i++)
   if (array[i] == target)
          return i;

如果数组有多个等于目标的元素,是否可以返回一个以上的值?

【问题讨论】:

【参考方案1】:

您可能会费心在函数中分配一个动态数组,但这可能最好留给调用者来管理。

我会改变这个函数,比如:

int findVal (int *array, int size, int val) 
    for (int i = 0; i < size; i++)
        if (array[i] == val)
            return i;
    return -1;

到一个允许你指定一个起点(或者,更准确地说,比起点少一个):

int findVal (int *array, int size, int last, int val) 
    for (int i = last + 1; i < size; i++)
        if (array[i] == val)
            return i;
    return -1;

然后让您的客户调用它:

int index = findVal (myarray, sizeof(myarray)/sizeof(*myarray), -1, myval);
while (index != -1) 
    // Do something with index.
    index = findVal (myarray, sizeof(myarray)/sizeof(*myarray), index, myval);

如果您的客户希望将其放入数组中,他们可以将其放入数组中。但是,如果他们只是想做一些短暂的事情(比如只打印索引然后忘记它),那么为此浪费一个数组是没有意义的。

【讨论】:

+1:很好的答案...不遗余力:-)【参考方案2】:

您可以打印出它们的索引值(允许打印多个值)或将它们插入到数组中然后返回,而不是返回匹配的元素。

【讨论】:

所以我将返回 i 存储在一个数组中,然后将其用作打印输出的索引? 您可以将每个匹配的 i 值附加到数组中,然后返回。或者,您可以打印出i 的每个匹配值。

以上是关于线性搜索数组的主要内容,如果未能解决你的问题,请参考以下文章

线性搜索类对象数组

有序数组中的线性搜索 - Java

如何使用伪代码开发线性搜索和二分搜索算法。?

使用线性搜索为二维数组生成唯一数字

如何在 C++ 中线性搜索两个数组?

字符串数组的线性搜索[重复]