问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

pascal快速排序问题

发布网友 发布时间:2024-09-26 22:27

我来回答

2个回答

热心网友 时间:2024-10-06 06:42

program quicksort;
const maxn=10000;
type q=record
num:longint;
data:longint;
end;
var a:array [1..maxn] of q;
i,n:longint;

procedure switch(var a,b:q);
var x:q;
begin
x:=a;
a:=b;
b:=x;
end;

function compare(x,y:longint):boolean;
begin
if a[x].data>=a[y].data then exit(true);
exit(false);
end;

procedure mp(f,l:integer);
var i,j:integer;
begin
for i:=1 to l-f do
for j:=f to l-i do
if not compare(j,j+1) then
switch(a[j],a[j+1]);
end;

procedure kp(f,l:integer);
var i,j:integer;
x:longint;
begin
i:=f; j:=l;
randomize;
x:=random(l-f)+f;
repeat
while compare(i,x) do inc(i);
while compare(x,j) do dec(j);
if i<=j then
begin
switch(a[i],a[j]);
if x=i then x:=j
else if x=j then x:=i;
inc(i); dec(j);
end;
until i>j;

if i<l then
if l-i<=20 then mp(i,l)
else kp(i,l);
if f<j then
if j-f<=20 then mp(f,j)
else kp(f,j);
end;

begin
assign(input,'a.txt');
reset(input);
assign(output,'b.txt');
rewrite(output);

readln(n);
for i:=1 to n do
begin
read(a[i].data);
a[i].num:=i;
end;
kp(1,n);
for i:=1 to n do
writeln(a[i].data,' ',a[i].num);

close(input);
close(output);
end.

热心网友 时间:2024-10-06 06:43

我的程序短一点。

var
n,i:longint;
a,b:array [1..10000] of longint;
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
readln(n);
for i:=1 to n do read(a[i]);
readln;
b:=a;
for i:=n downto 1 do write(a[i]);
writeln;
for i:=1 to n do write(b[i]);
writeln;
end.

热心网友 时间:2024-10-06 06:42

program quicksort;
const maxn=10000;
type q=record
num:longint;
data:longint;
end;
var a:array [1..maxn] of q;
i,n:longint;

procedure switch(var a,b:q);
var x:q;
begin
x:=a;
a:=b;
b:=x;
end;

function compare(x,y:longint):boolean;
begin
if a[x].data>=a[y].data then exit(true);
exit(false);
end;

procedure mp(f,l:integer);
var i,j:integer;
begin
for i:=1 to l-f do
for j:=f to l-i do
if not compare(j,j+1) then
switch(a[j],a[j+1]);
end;

procedure kp(f,l:integer);
var i,j:integer;
x:longint;
begin
i:=f; j:=l;
randomize;
x:=random(l-f)+f;
repeat
while compare(i,x) do inc(i);
while compare(x,j) do dec(j);
if i<=j then
begin
switch(a[i],a[j]);
if x=i then x:=j
else if x=j then x:=i;
inc(i); dec(j);
end;
until i>j;

if i<l then
if l-i<=20 then mp(i,l)
else kp(i,l);
if f<j then
if j-f<=20 then mp(f,j)
else kp(f,j);
end;

begin
assign(input,'a.txt');
reset(input);
assign(output,'b.txt');
rewrite(output);

readln(n);
for i:=1 to n do
begin
read(a[i].data);
a[i].num:=i;
end;
kp(1,n);
for i:=1 to n do
writeln(a[i].data,' ',a[i].num);

close(input);
close(output);
end.

热心网友 时间:2024-10-06 06:45

我的程序短一点。

var
n,i:longint;
a,b:array [1..10000] of longint;
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
readln(n);
for i:=1 to n do read(a[i]);
readln;
b:=a;
for i:=n downto 1 do write(a[i]);
writeln;
for i:=1 to n do write(b[i]);
writeln;
end.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
瑞安皇都大厦几个电梯 办签证和护照的具体步骤和一共的费用!我需要详细一点的答案. 办护照流程 办护照的流程是什么 哪位推荐几部韩剧啊!!要像豪杰春香,魔女幼熙这样的,剧情要感人,最好是... 小阴唇内应该是光滑的吗,阴道口痒为什么 阴道口有像草莓样正常吗 任氏族谱字辈:世秉忠贞 永达明玉起 国正天元律迎祖大继昌 河南夏氏家谱辈分我是永城市酂城镇夏氏夏世界具家谱记载洪武二年始祖良... 夏侯姓字辈排行 夏氏辈行,我爷爷明字辈,我父亲应字辈,我是崇字辈,后面是什么辈? 治前列腺炎什么药最好 汽车侧滑怎么开车?汽车侧滑开车技巧 什么药治疗前列腺炎效果最好 智能云盒是做什么的呢? 感冒咳嗽和支气管炎咳嗽的区别 咳嗽厉害,每晚睡时咳到12点多才能睡,咳稀白痰有少量绿痰,我每天吃鱼腥... 咳嗽有鸣音是不是肺炎 咳嗽四年,吐白痰,有时气管发鸣音 为什么我下载整蛊软件之后电脑还是要解锁? 索爱lt18i 为什么我下载360锁屏之后,解锁的时候依然还有系统自带的解锁... 金立GN305短信密码怎样解锁 小孩睡觉咬牙咯咯响是什么原因 ...压缩文件加密了,但是解压的时候还是直接解压,不需要输入密码... ...zip,输入密码后,第二次打开为什么不需要输入密码了? 小孩睡觉磨牙齿是什么原因 五岁小孩睡觉磨牙是怎么回事 江苏淮安电信,联通,移动,哪个宽带好点~我平时就玩DOTA,倩女幽魂, 电信宽带比联通好,是真的吗? 苏州装宽带移动.联通.电信哪个比较好 阿姨我爱你你永远在我心中作文100字 下雨天汽车打滑左右晃 雨天开车要不要开防滑 求pascal快速排序的程序一个。 下雨天开车怎么预防避免发生交通事故 雨天驾车注意事项有哪些 初一下学期全部读一读写一写的解释和注音 ...苗条,灵动,咿哑,本色当行,铮铮,嗔视,粲然,颦蹙,叱咤风云,尽态极... ...我想问一下上海亚一金店的行吗?我应该买多少克的呢? 请问下"九州通医药公司"是正规的公司吗?待遇好吗? 上海亚一金店,今天买了一条项链,其中一组有4颗,其它都是3颗珠珠的.明... 我的快手号被别人盗了,绑定了别人的手机号,怎么要回来,这个快手号对... 九州通医药集团怎样? ...qq也解绑了,然后支付密码也泄露了,怎么办!!急 我八天没有联系她了,第五天的时候她给我发微信说昨晚梦见我了,然后晚上... ...了!分手了!过段时间我想送她999朵玫瑰!我还能挽回她吗? 什么家用电梯适合放在别墅里? 6层20米高220伏电家用电梯可以装吗? 一句表白的话打动男生 向喜欢的男生表白的话 哪些配饰可以增加着装的优雅感? 搭配白色毛衣的饰品有哪些?