c 找眾數及其重數

2021-08-11 01:32:30 字數 515 閱讀 5603

問題描述:在乙個由n個元素組成的表中,出現次數最多的元素被稱為眾數。試寫乙個尋找眾數及其重數的有效演算法,並分析其計算時間複雜性。

方法:

1. 首先用快排把資料排個序

2. 再使用find方法找出眾數及其重數

注:這裡第一步就跳過了,因為快排可以調庫函式,這裡主要是測試一下find方法的正確性。

**如下:

#include 

using

namespace

std;

void find(int a,int n)

for (i = 0; i < n;)

else}}

int max=c[0],k=0;//(3)

for (int i = 0; i < n; i++)

;find(a,5);

return

0;}

注:

分治演算法 求眾數及其重數

問題描述 給定含有 n 個元素的多重集合 s,每個元素在 s 中出現的次數稱為該元素的重數。多重集合 s 中重數最大的素稱為眾數。例如多重集合 s 其中眾數是 2,其重數為 3。用分治法設計並實現在多重集合中找眾數及其重數的演算法,要求演算法的時間複雜性在壞情況下不超過 o nlogn 方法一 窮舉...

眾數和重數問題

演算法設計 可以定義陣列來儲存資料,之後用陣列count來統計資料出現的頻數。可以用迴圈的巢狀兩次for迴圈讓陣列中的每乙個資料和另外的資料比較,相同則對應的count陣列的值加1,實現頻數統計。然後,可以for迴圈遍歷count陣列找到最大值,記下下標,即是眾數的下標。如下 include inc...

c語言分治法求眾數重數 分治法之眾數問題

實驗總結 剛開始我沒有想到可以用分治法來做,用的是陣列來做。做完以後發現演算法太過複雜,而且處理較大的n時,時間複雜度和空間複雜度都比較大。於是我參考了演算法答案那本書,學到了分治法來解決這道題。但是在完成了用分治法的 以後,我發現了問題 輸出應該為 分治法解決這道題有乙個大前提 多重集中的元素是有...