作业帮 > 综合 > 作业

寻找众数 pascal

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/08 07:54:07
寻找众数 pascal
寻找众数
【问题描述】
在一个有限的整数序列中,出现次数最多的那个数称为这个序列的众数.如序列:3,1,2,1,5,1,2.其中1出现的次数最多,出现3次,所以1是这个序列的众数.一个有限序列中的众数可能不止一个,如序列:8 2 8 2 2 11 1 1 8 1 13 13,其中1,2,8都出现3次,所以他们3个都是这个序列的众数.
任务:对于给定的整数序列,求出这个序列的众数及其出现的次数,如果这个序列的众数不止一个,输出最大的那个众数及其出现的次数.
【输入】
第一行正整数n,表示给定序列的个数.
第二行是n个用空格隔开的整数,代表给定的序列.
【输出】
一行两个用一个空格隔开的数,第一个是众数,第二个是该众数在序列中出现的次数.
【输入输出样例】
most.inmost.out
12
8 2 8 2 2 11 1 1 8 1 13 138 3
【数据规模和约定】
30%的数据:n
寻找众数 pascal
楼上说的都是对的,这是自己打的代码,帮你实现出来了,参考一下.
var i,j,n,max,maxn:longint;
a:array[1..200000]of longint;
procedure Sort(l, r: longint);
var
i, j, x, y: longint;
begin
i := l; j := r; x := a[(l+r) DIV 2];
repeat
while a[i] < x do i := i + 1;
while x < a[j] do j := j - 1;
if i j;
if l < j then Sort(l, j);
if i < r then Sort(i, r);
end;
begin
readln(n);
for i:=1 to n do
read(a[i]);
a[n+1]:=maxlongint;
sort(1,n);
i:=0;
repeat
inc(i);
for j:=i+1 to n+1 do
if a[j]a[i] then break;
if maxnmax) then max:=a[i];
i:=j-1;
until i>=n;
writeln(max,' ',maxn);
end.