讨论 / 那个高手帮我看一下?O(∩_∩)O~
Mine_ysd 2010-04-17 09:43:00
点我顶贴 收藏 删除
为什么我的Qsort也会超时?

var a:array[1..20000]of longint;s:longint;

v,n,i:integer;

procedure qsort(top,bot:integer);

var i,j,x,t:longint;

begin

i:=top; j:=bot;

x:=a[(i+j)div 2];

repeat

while a[i]<x do inc(i);

while a[j]>x do dec(j);

if j>=i then

begin t:=a[i];a[i]:=a[j];a[j]:=t;inc(i);dec(j); end;

until i>j;

if i<bot then qsort(i,bot);

if j>top then qsort(top,j);

end;

begin

readln(n);

for i:=1 to n do read(a[i]);v:=1;

for i:=1 to n-1 do

begin

qsort(v,n);

a[v+1]:=a[v+1]+a[v];inc(v);inc(s,a[v]);

end;writeln(s);

end.

#1 yangdong@2010-04-17 09:43:00
回复 删除
回复

快排只在开始用,以后只要把新生成的数插入到合适位置就好、否则调用n次快排…那时间很恐怖…

查看更多回复
提交回复