arrays - O(n) 线性搜索数组以查找最常见的项目

标签 arrays algorithm sorting search big-o

我正在尝试为 O(n) 算法编写伪代码,该算法在排序数组中搜索最常出现的元素。

对数据结构和算法非常陌生,我已经有大约 2 年半没有编码了。我已经围绕这个主题做了一些阅读,我相信我正在掌握这些概念,但我正在努力解决上述问题。

这就是我到目前为止所拥有的一切,如果没有第二个“for”循环,我正在努力获得所需的结果,这使得算法成为 O(n^2) 我相信但我不确定我将如何处理具有不止一种频繁出现的元素。

如能提供任何帮助或指导,我将不胜感激。

 A=[i];
 Elem=0; 
 Count=0;
 For (i=0; j< A[n-1]; j++);
      tempElem=A[j];
      empCount=0;
      for(p=0; p<A[n-1; p++])   
          If(A[p]==tempElem)
             tempCount++:
      if(tempCount>Count);
        Elem==tempElem:
        Count=tempCount;
 Print(“The most frequent element of array A is”: Elem “as it appears” Count “times”)

最佳答案

内部循环不是你的 friend 。 :-)

你的循环体应该只关注两个逻辑位:

  1. 这个元素和之前的元素一样吗?

    如果是,则增加当前项目的计数 (curr_count) 并转到下一个元素。

  2. 否则,检查 curr_count 与迄今为止最好的。如果更好,则制作之前的元素并统计新的“最佳”数据。

    无论哪种方式,将计数设置回 1 并转到下一个元素。

关于arrays - O(n) 线性搜索数组以查找最常见的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47213118/

相关文章:

javascript - javascript 单击后获取数组的下一个元素并将其显示在搜索表单中

java - 使用函数将元素添加到类数组。处理3中的 "Paint"

python - 使用递归打印 n 选择 k 组合算法

通过大量比较对对象进行评分的算法

python - 在 Python 数组中使用 max() 和 min() 失败

javascript - 返回数组中偶数的总和

C++ 函数不返回二维数组

php - 混合任何字符串列表(数组)的算法

c++ - 我应该使用哪个数据集?

C# - 对字符串的 ArrayList 进行排序