3个回答
展开全部
这个是快排:
var
a:array[1..10000]of longint;
m,n:longint;
procedure qsort(l,r:longint);
var i,j,t,d:longint;
begin
i:=l;j:=r;t:=a[(i+j)div 2];
while i<=j do
begin
while a[i]<t do i:=i+1;
while a[j]>t do j:=j-1;
if i<=j then
begin
d:=a[i];a[i]:=a[j];a[j]:=d;
i:=i+1;
j:=j-1;
end;
end;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end;
begin
readln(n);
for m:=1 to n do
read(a[m]);
qsort(1,n);
for m:=1 to n do
write(a[m],' ');
readln(n);
end.
var
a:array[1..10000]of longint;
m,n:longint;
procedure qsort(l,r:longint);
var i,j,t,d:longint;
begin
i:=l;j:=r;t:=a[(i+j)div 2];
while i<=j do
begin
while a[i]<t do i:=i+1;
while a[j]>t do j:=j-1;
if i<=j then
begin
d:=a[i];a[i]:=a[j];a[j]:=d;
i:=i+1;
j:=j-1;
end;
end;
if l<j then qsort(l,j);
if i<r then qsort(i,r);
end;
begin
readln(n);
for m:=1 to n do
read(a[m]);
qsort(1,n);
for m:=1 to n do
write(a[m],' ');
readln(n);
end.
更多追问追答
追问
快排也那么长
追答
……你要短的?快排在处理长的数列时优势比较大。(快排一定要短吗?)
展开全部
var
temp,l,n,i:longint;
num:array[1..1000] of longint;
begin
readln(n);
for i:=1 to n do
readln(num[i]);
for i:=1 to n-1 do
for l:=2 to n do
if num[l]<num[i] then begin
temp:=num[i];
num[i]:=num[l];
num[l]:=temp;
end;
for i:=1 to n do
write(num[i]);
end.
>0<
这个是冒泡的.,. 比楼上的短....
不懂可以问
temp,l,n,i:longint;
num:array[1..1000] of longint;
begin
readln(n);
for i:=1 to n do
readln(num[i]);
for i:=1 to n-1 do
for l:=2 to n do
if num[l]<num[i] then begin
temp:=num[i];
num[i]:=num[l];
num[l]:=temp;
end;
for i:=1 to n do
write(num[i]);
end.
>0<
这个是冒泡的.,. 比楼上的短....
不懂可以问
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
各种排序啊,冒泡,归并,二叉树,插入。
追问
我不会编写一个程序
(程序不用太复杂)
追答
囧,悲剧的我不会pascal
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询