pascal数字排序

随机产生20个数字将其从小到大排序方法如下:如:5329342129和53比,29比53小,则把29移到53前面,即29533421然后34和前两数相比,把34放到53前... 随机产生20个数字
将其从小到大排序
方法如下:
如:
53 29 34 21
29和53比,29比53小,则把29移到53前面,即
29 53 34 21
然后34和前两数相比,把34放到53前面,即
29 34 53 21
然后21和前3数比,把21放到最前面,即
21 29 34 53
……
这个程序怎么写
是把数据移动,不是替换
展开
 我来答
nekitarc
2006-06-03 · TA获得超过2088个赞
知道小有建树答主
回答量:315
采纳率:0%
帮助的人:545万
展开全部
你的“移动”不就是要一个一个的换位吗?
除非是用链表,否则没必要在数组中移动,效率很低的

设数组为a,一共有20个数


for i:=2 to 19 do
for j:=i downto 2 do
if a[j]<a[j-1] then begin
t:=a[j];
a[j]:=a[j-1];
a[j-1]:=t end;
应该就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
奇妙火麒麟
2006-06-13 · TA获得超过207个赞
知道小有建树答主
回答量:90
采纳率:0%
帮助的人:0
展开全部
Ⅰ.键盘读入:
Program paixu;
var
a:array [1..20] of integer;
i,j,temp:integer;
begin
for i := 1 to 20 do
read(a[i]);
for i := 1 to 20 do
for j := (i+1) to 20 do
if a[i]>a[j] then
begin
temp:=a[i];
a[j]:=a[i];
a[i]:=temp;
end
for i := 1 to 20 do
write(a[i]);
readln
end.
Ⅱ.文件读入:
Program paixu;
var
unput,output:text of file;
a:array [1..20] of integer;
i,j,temp:integer;
begin
assign(unput,'d:\input.txt');
i:=0;
repeat
inc(i);
read(a[i])
until eof(f);
close(f);
assign(output,'d:\ouput.txt');
for i := 1 to 20 do
for j := (i+1) to 20 do
if a[i]>a[j] then
begin
temp:=a[i];
a[j]:=a[i];
a[i]:=temp;
end
for i := 1 to 20 do
write(output,a[i]);
close(output);
readln
end.
Ⅲ.线形列表:
太复杂,而且应该不会有那么多数据吧!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2006-06-01
展开全部
gfsdag
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式