陣列的眾數問題的分治解法

2021-06-06 23:52:02 字數 841 閱讀 2267

★問題描述:

給定含有n個元素的多重集合s,每個元素在s中出現的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數。

例如,s=。

多重集s的眾數是2,其重數為3。

★程式設計任務:

對於給定的由n個自然數組成的多重集s,程式設計計算s的眾數及其重數。

★資料輸入:

輸入資料由檔名為input.txt的文字檔案提供。檔案的第1行多重集s中元素個數n;接下來的n行中,每行有乙個自然數。

★結果輸出:

程式執行結束時,將計算結果輸出到檔案output.txt中。輸出檔案有2行,第1行給出眾數,第2行是重數。

輸入檔案示例   輸出檔案示例

input.txt       output.txt

6              2

1              322

235

源**:#include

#include

using namespace std;

//結構體用來儲存眾數的元素與重數

typedef struct

zs;//記錄中位數的起始下標

typedef struct

node;

//快排

zs x;

//int data=1;

void sort(int a,int s,int t)//對a[s]到a[t]的元素排序

}return m;

}//眾數的重數求取

void mode(int *a,int l,int r)

sort(a,0,n-1);

mode(a,0,n-1);

cout<

眾數問題(遞迴 分治)

所謂眾數,就是對於給定的含有n個元素的多重集合,每個元素在s中出現次數最多的成為該元素的重數,多重集合s重的重數最大的元素成為眾數。例如 s 則多重集s的眾數是2,其重數為3。現在你的任務是 對於給定的由m個自然數組成的多重集s,計算出s的眾數及其重數。解題思路 1 快速排序 2 求中位數 3 計算...

分治演算法 眾數問題

problem description 給定含有n個元素的多重集合s,每個元素在s 現的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數。例如,s 多重集s的眾數是2,其重數為3。對於給定的由n 個自然數組成的多重集s,計算s的眾數及其重數。如果出現多個眾數,請輸出最小的那個。input 輸入...

眾數問題 分治演算法

給定含有n個元素的多重集合s,每個元素在s 現的次數稱為該元素的重數。多重集s中重數最大的元素稱為眾數。例如,s 多重集s的眾數是2,其重數為3。對於給定的由n 個自然數組成的多重集s,計算s的眾數及其重數。如果出現多個眾數,請輸出最小的那個。input 輸入資料的第1行是多重集s中元素個數n n ...