2017-11-09 14 views
0

最も頻繁に発生する要素のソートされた配列を検索するO(n)アルゴリズムの疑似コードを作成しようとしています。最も一般的な項目のO(n)線形検索

データ構造やアルゴリズムには新しく、私は約2年半かけてコード化していません。私は主題の周りのいくつかの読書をして、私はコンセプトをつかんでいると信じていますが、私は上記の問題に苦しんでいます。

これは私がこれまで行ってきたことですが、アルゴリズムを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”) 
+3

ヒント:配列がすでにソートされている場合、なぜ0で 'p'を開始していますか?配列がすでにソートされていることがわかっている場合は、同様の項目が常に互いに隣り合っていることがわかります。 –

答えて

2

内部ループはないあなたの友達です。

  1. は、この要素は前回と同じです::-)

    はあなたのループ本体は、ロジックのちょうど2つのビットを上のキーすべきか?

    もしそうなら、現在のアイテム(curr_count)のカウントをインクリメントし、次の要素に進みます。

  2. それ以外の場合は、今までのところ最高の値であるcurr_countをチェックしてください。それが良い場合は、前の要素を作成し、新しい「ベスト」データを数えます。

    いずれにしても、カウントを1に戻して次の要素に進みます。

+0

ニース、簡潔な、ソリューションの説明。 –

関連する問題