【伸手党】大神啊,求一行的辣个快排。。。。。。。。在线等
freepascal吧
全部回复
仅看楼主
level 1
kehuaabc 楼主
就是不用编译的自带快排函数
2016年07月09日 06点07分 1
level 3

2016年07月15日 12点07分 2
level 12
来自:C:\FPC\3.0.0\demo\text\qsort.qq
内容如下:
{
This file is part of the Free Pascal run time library.
Copyright (c) 1993-2005 by the Free Pascal Development Team
QuickSort Example
See the file COPYING.FPC, included in this distribution,
for details about the copyright.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
**********************************************************************}
program quicksort;
{$ifdef MACOS}
{$define USESMALL}
{$endif}
{$ifdef MSDOS}
{$define USESMALL}
{$endif}
const
{$ifndef USESMALL}
max = 100000;
{$else}
max = 1000; {Actually it works with 100000 also, but that might }
{lead problems occacionally.}
{$endif}
type
tlist = array[1..max] of longint;
var
data : tlist;
procedure qsort(var a : tlist);
procedure sort(l,r: longint);
var
i,j,x,y: longint;
begin
i:=l;
j:=r;
x:=a[(l+r) div 2];
repeat
while a[i]<x do
inc(i);
while x<a[j] do
dec(j);
if not(i>j) then
begin
y:=a[i];
a[i]:=a[j];
a[j]:=y;
inc(i);
j:=j-1;
end;
until i>j;
if l<j then
sort(l,j);
if i<r then
sort(i,r);
end;
begin
sort(1,max);
end;
var
i : longint;
begin
write('Creating ',Max,' random numbers between 1 and 500000');
randomize;
for i:=1 to max do
data[i]:=random(500000);
writeln;
writeln('Sorting...');
qsort(data);
writeln;
for i:=1 to max do
begin
write(data[i]:7);
if (i mod 10)=0 then
writeln;
end;
end.
2016年07月28日 12点07分 3
1