pascal语言一道题,军事机密(secret。pas)

我军方截获的信息由n(n《=30000)个数字组成,因为是帝国的高端机密,所以一时不能破解。最原始的想法就是对n个数进行从小到大排列,每个数对应一个序号,然后对第i个是什么数感兴趣,现在要求编程完成。【输入格式】第一行是n,第二行市n个截获的数字,第三行是数字k,接着是k航要输出数的序号。【输出格式】k行序号所对应的数字。
【输入样例】
5
121 1 126 123 7
3
2
4
3
【输出样例】
7
123
121

我用快速排序,为什么输出是
121
123
126
我的代码如下:
program project1;
const
l=1;
var
c,n,k,x:integer;
a:array[1..30000] of integer;
procedure qs(l,d:integer);
var
p,i,j,mid:integer;
begin
mid:=(l+d) div 2;
i:=l;
j:=d;
repeat
while a[i]<mid do inc(i);
while a[j]>mid do dec(j);
if i<=j then
begin
p:=a[i]; a[i]:=a[j]; a[j]:=p;
end;
inc(i); dec(j);
until i>j;
if l<j then qs(l,j);
if i<d then qs(i,d);
end;
begin
assign(input,'asd.in');
reset(input);
assign(output,'asd.out');
rewrite(output);
readln(n);
for x:=l to n do
begin
if x=n then readln(a[x]) else read(a[x]);
end;
readln(k);
qs(l,n);
for x:=l to k do
begin
readln(c);
writeln(a[c]);
end;
close(input);
close(output);
end.

1)用快选,别用快排。
2)快排必须研究的很透彻,才不会出错!
3)pascal不区分大小写,const l=1;没有必要且易出错!
4)你写的不是快排!
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-20
NO知道,太难了
第2个回答  2013-04-20
好像是程序设计的 但是我不知道
相似回答