Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

终于用PASCAL过了这道题后的一些经验。

Posted by pcxjx at 2004-10-31 19:30:21 on Problem 1002
这道题目可以用堆排序或快速排序来做。
我是用快排作的,关键是排序前需要判断是否已经有序。
郁闷的是用随机居然速度还慢。

Procedure  qt(s,t:longint);
    var  i,j,x,y:longint;
     begin
     pk:=true;
      for i:=s to t-1 do
       if da[i]>da[i+1] then begin pk:=false; break end;
      if pk then exit;
      i:=s; j:=t;{1} x:=da[i];{2} {y:=s+trunc(random(t-s)); if y>t then y:=t;
      x:=da[y]; da[y]:=da[i]; da[i]:=x;}
       while  i<j  do
        begin
         while (da[j]>=x) and (j>i) do j:=j-1;
          if j>i then begin da[i]:=da[j]; i:=i+1 end;
         while (da[i]<=x) and (i<j) do i:=i+1;
          if i<j then begin da[j]:=da[i]; j:=j-1 end;
         da[i]:=x
        end;
     if s<(i-1) then qt(s,i-1);
     if (i+1)<t then qt(i+1,t);
     end;

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator