一道pascal编程题目

来源:百度知道 编辑:UC知道 时间:2024/05/19 20:15:44
使用基数排序法将200000个数据(每个数据不超过1.5*10^9)进行排序

...我无语...
Program JSSort;
Var
A:Array[1..1500000000]Of 200000;
I,J,N:Longint;
Begin
REadLn(N);
For I:=1 To N Do
Begin Read(J);Inc(A[J]);End;
For I:=1 To 1500000000 Do
If A[I]<>0 THen WriteLn(I,' ',A[I]);
End.
{前提是FP能开足够大的空间,电脑运算足够快}
{我也是OIer这是NOIP2007提高组第一题,要是我没记错的话,其空间限制为256M,时间限制1S,处理器速度2.0GHz所以肯定会超时}
{因此要想更好的方法其实标准算法很简单:快速排序+统计连续相同的数的个数}
Program Example_Sort;
Type EEE=Record Data,Time:Longint;End;
Var
A:Array[1..200001]Of EEE;
I,J,K,M,N:Longint;
procedure QSort(l, r: Longint);{快速排序}
var
i, j, x, y: Longint;
begin
i := l; j := r; x := a[(l+r) DIV 2].Data;
repeat
while a[i].data < x do i := i + 1;
while x < a[j].data do j := j - 1;
if i <= j then
begin
y := a[i].data; a[i].data := a[j].data; a[j].data := y;
i := i + 1; j := j - 1;
end;
until i &g