回 帖 发 新 帖 刷新版面

主题:请教快速排法

书上的快速排序法都无法运行,请问有谁能给出快速排序的实用的PROCEDURE。

回复列表 (共1个回复)

沙发

在PP/DEMO文件夹中找的~~
program quicksort;
const max=10;
var data:array [1..max] of longint;
    i:longint;
procedure qsort(l,r:longint);
var i,j,x,y:longint;
begin
  i:=l;
  j:=r;
  x:=data[(l+r) div 2];
  repeat
    while data[i]<x do
      inc(i);
    while x<data[j] do
      dec(j);
    if i<=j then
    begin
      y:=data[i];
      data[i]:=data[j];
      data[j]:=y;
      inc(i);
      j:=j-1;
    end;
  until i>j;
  if l<j then qsort(l,j);
  if i<r then qsort(i,r);
end;
begin
  randomize;
  writeln('First:');
  for i:=1 to max do
  begin
    data[i]:=random(max);
    write(data[i],' ');
    if (i mod 10)=0 then writeln;
  end;
  qsort(1,max);
  writeln('Last:');
  for i:=1 to max do
  begin
    write(data[i],' ');
    if (i mod 10)=0 then writeln;
  end;
end.

我来回复

您尚未登录,请登录后再回复。点此登录或注册