>>18
やり方はいろいろあると思うけど、とりあえず一例。

元の配列と同じサイズの領域を確保し、内容をコピー。
コピーした配列のほうをソート。
(元の配列の内容を更新可能なら、コピーせずそれを使ってよい。
ソートについてはqsort関数を使うか、ぐぐる。)

ソート済み配列を先頭から見ると、同じ数値は連続して固まって並んでいる。
最初に現れた数値がa, その個数をNaとすると、
 val=a, num=Na
つぎに表れた数値bの個数を数え、それがNbとする。
Nb>numなら val=b, num=Nb
これを配列の最後まで繰り返す。
最終的にvalが求める値。