我试图为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”)
答案 0 :(得分:2)
内圈是而不是你的朋友。 : - )
你的循环体应该只键入两位逻辑:
这个元素与前一个元素相同吗?
如果是,请增加当前项目的计数(## 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)
)并转到下一个元素。
否则,请到目前为止检查curr_count
。如果它更好,那么制作前一个元素并计算新的“最佳”数据。
无论哪种方式,将计数设置回1并转到下一个元素。