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

时间:2017-11-09 23:06:54

标签: 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”)

1 个答案:

答案 0 :(得分:2)

内圈是而不是你的朋友。 : - )

你的循环体应该只键入两位逻辑:

  1. 这个元素与前一个元素相同吗?

    如果是,请增加当前项目的计数(## Define positions of nodes pos = np.array([[0,0],[10,0],[0,10],[10,10],[5,5],[15,5]]) ## Define the set of connections in the graph adj = np.array([[0,1],[1,3],[3,2],[2,0],[1,5],[3,5],]) ## Define the symbol to use for each node (this is optional) symbols = ['o','o','o','o','t','+'] ## Define the line style for each connection (this is optional) lines = np.array([(255,0,0,255,1),(255,0,255,255,2),(255,0,255,255,3), (255,255,0,255,2),(255,0,0,255,1),(255,255,255,255,4),], dtype=[('red',np.ubyte),('green',np.ubyte), ('blue',np.ubyte), 'alpha',np.ubyte),('width',float)]) ## Update the graph g.setData(pos=pos, adj=adj, pen=lines, size=1, symbol=symbols, pxMode=False) )并转到下一个元素。

  2. 否则,请到目前为止检查curr_count。如果它更好,那么制作前一个元素并计算新的“最佳”数据。

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