寻找众数 pascal
发布网友
发布时间:2022-05-14 00:43
我来回答
共3个回答
热心网友
时间:2023-11-13 12:23
楼上说的都是对的,这是自己打的代码,帮你实现出来了,参考一下。。
var i,j,n,max,maxn:longint;
a:array[1..200000]of longint;
procere 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 then
begin
y := a[i]; a[i] := a[j]; a[j] := y;
i := i + 1; j := j - 1;
end;
until 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 maxn<j-i then begin maxn:=j-i; max:=a[i]; end
else if (maxn=j-i)and(a[i]>max) then max:=a[i];
i:=j-1;
until i>=n;
writeln(max,' ',maxn);
end.
热心网友
时间:2023-11-13 12:23
先排序,然后用贪心算法,打擂台,把最多的一项和出现的次数记录在max1和max2里,输出就可以了。
热心网友
时间:2023-11-13 12:24
快排,然后扫一遍
PASCAL 求众数
首先快排一下.从左往右搜索,如果 a[i]=a[i-1] then tot[i]:=tot[i-1]+1 else tot[i]:=1;if tot[i]>max then begin listtot:=1;{答案队列} list[listtot]:=a[i];end;if tot[i]=max then begin inc(listtot);list[listtot]:=a[i];end;之后就是输出了 ...
PASCAL 求众数
4、依次统计每个数出现的次数,并存入数组b 5、扫描数组b中最大的次数,并找到对应的a数组中的数据 6、输出结果。
如何用PASCAL求众数及其出现次数
end.这段代码如果在free pascal中不能运行的话,用下面这个free pascal好了,它是free pascal和turbo pascal的中和版:http://www.zjtg.cn/itjs/download/FPascal4NOI.exe.如果你的系统是windows98的话,下载下面两个程序:http://www.ywhs.net/uploads/soft/FPascal4NOI-win98.exe http://www...
pascal问题 求N个整数的平均数、众数和中位数
{ 而这10个数:106 99 104 120 107 112 33 102 97 100 按一定顺序排列后得到:120 112 107 106 104 102 100 99 97 33 正中间有两个数:104 102,中位数就是这两个数的平均数,即(104+102)/ 2 = 103。这段你写的不对吧??好像题目中写过A[i]<100 的 } var average:exte...
pascal的问题,帮我求方差
第一题:var i,n:integer;s,x:real;a:array[1..1000]of integer;begin readln(n); {读入有多少个数} for i:=1 to n do begin read(a[i]); {读入每一个数} x:=x+a[i]; {算出所有数的总合} end;x:=x/n; {求出平均数} for i:=1 to n do s:=s+(a[i]-x...
pascal 求解 问题描述 由文件给出N个1到30000间无序正整数,其中1<=N...
我觉得这个数据范围完全不用什么快排,大材小用,30000内的数直接计数排序就可以了(你的程序就是计数排序).你这么做我觉得是完全正确的,我也写了个数据生成器来试了试,你的程序时间复杂度完全过关,正确性应该没有问题.空间不应该有问题,你的空间复杂度十分低,低到了基本可以忽略的地步,不可能MLE的 ...
PASCAL 求众数
1..100000] of real;num:array[0..10000] of longint;n,i,ans:longint;begin readln(n);for i:=1 to n do begin readln(a[i]);inc(num[trunc(a[i]*100)]);end;ans:=0;for i:=0 to 10000 do if num[i]>ans then ans:=num[i];writeln(ans);end.参考资料:自己做的 ...
PASCAL 求众数
n,i,j,k,max:longint;c:array[1..1000]of real;a:array[0..10000]of longint;b:real;procedure swap(var a,b:real);var x:real;begin x:=a; a:=b; b:=x; end;begin readln(n);for i:=1 to n do begin readln(b);c[i]:=b;inc(a[trunc(b*100)]);if a[trunc(b*...
PASCAL 求众数
var i,j,n:longint;a:array[0..10000]of longint;t:real;begin readln(n);for i:=1 to n do begin readln(t);j:=trunc(t*100);inc(a[j]);end;j:=0;for i:=0 to 10000 do if a[i]>j then j:=a[i];for i:=0 to 10000 do if a[i]=j then begin writeln(i/100...
PASCAL 求众数
a:array [-1..10000,1..2] of longint;k:real;procedure qs(l,r:longint);var i,j,mid:longint;begin i:=l;j:=r;mid:=a[(i+j) div 2,1];repeat while a[i,1]>mid do inc(i);while a[j,1]<mid do dec(j);if i<=j then begin a[-1]:=a[i];a[i]:=a[j];...