Arrays 数组中最常见项的O(n)线性搜索

Arrays 数组中最常见项的O(n)线性搜索,arrays,algorithm,sorting,search,big-o,Arrays,Algorithm,Sorting,Search,Big O,我试图为一个O(n)算法编写伪代码,该算法在排序数组中搜索最频繁出现的元素 对数据结构和算法非常陌生,我已经有2年半没有编码了。我已经围绕这个主题做了一些阅读,我相信我掌握了这些概念,但我正在努力解决上述问题 到目前为止,这就是我所拥有的一切,我正在努力在没有第二个“for”循环的情况下获得期望的结果,这使算法成为一个O(n^2),我相信,我不确定如何处理多个频繁出现的元素 如能为我提供任何帮助或指导,我将不胜感激 A=[i]; Elem=0; Count=0; For (i=0; j

我试图为一个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”)
A=[i];
Elem=0;
计数=0;
对于(i=0;j
内部循环不是您的朋友。:-)

您的循环体只需输入两位逻辑:

  • 这个元素与前一个元素相同吗

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

  • 否则,请对照迄今为止的最佳值检查
    curr\u count
    。如果更好,则生成上一个元素并计算新的“最佳”数据

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

  • 内部循环不是您的朋友。:-)

    您的循环体只需输入两位逻辑:

  • 这个元素与前一个元素相同吗

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

  • 否则,请对照迄今为止的最佳值检查
    curr\u count
    。如果更好,则生成上一个元素并计算新的“最佳”数据

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


  • 提示:如果数组已经排序,为什么要从0开始
    p
    ?如果您知道数组已经排序,那么您就知道相似的项将始终彼此相邻。提示:如果数组已经排序,为什么要从0开始
    p
    ?如果您知道数组已经排序,那么您就知道相似的项将始终彼此相邻。很好,简洁,解决方案的描述。很好,简洁,解决方案的描述。