/ Vijos / 讨论 / 分享 /

我的快排哪里错了?

var a:array[1..100]of integer;

i,n:integer;

procedure qs(x,y:integer);

var l,r,mid,k:integer;

begin

mid:=(x+y)div 2;

l:=x;r:=y;

while l

4 条评论

  • @ 2009-10-10 12:25:45

    你递归一下那个mid对应的值变化了(因为你排序了,原来那个数位置可能变掉了),不再是原来那个值了。

  • @ 2009-10-09 23:00:37

    mid:=(x+y)div 2;

    改为 mid:=a[(x+y)div 2];

  • @ 2009-10-09 20:50:37

    ..

       if l

  • @ 2009-10-09 20:41:20

    otz

    那个MID 不是只存下标 而是存数组里的值

    = =好好理解下

  • 1