1. pascal 统计数字

来源:百度知道 编辑:UC知道 时间:2024/06/08 06:34:23
1. 统计数字
(count.pas/c/cpp)
【问题描述】
某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。
【输入】
输入文件count.in包含n+1行;
第一行是整数n,表示自然数的个数;
第2~n+1每行一个自然数。
【输出】
输出文件count.out包含m行(m为n个自然数中不相同数的个数),按照自然数从小到大的顺序输出。每行输出两个整数,分别是自然数和该数出现的次数,其间用一个空格隔开。
快排只能过八个点

老师说用二叉排序能过10个

program count;
type
arr=array[1..200000] of longint;
var
n,i:longint;
a,k:arr;
procedure qs(var b:arr;s,t:integer);
var
i,j,x,t1:longint;
begin
i:=s;
j:=t;
x:=b[i];
repeat
while (b[j]>=x)and(j>i) do j:=j-1;
if j>i then begin
t1:=b[i];
b[i]:=b[j];
b[j]:=t1;
end;
while (b[i]<=x)and(i<j) do i:=i+1;
if i<j then begin
t1:=b[j];
b[j]:=b[i];
b[i]:=t1;
end;
until i=j;
b[i]:=x;
i:=i+1;
j:=j-1;
if s<j then qs(b,s,j);
if i<t then qs(b,i,t);
end;
procedure tongji( t:longint);
var
i:longint;