归并排序
来源:互联网 发布:公务员网络大讲堂 编辑:程序博客网 时间:2024/06/06 02:14
const
maxn=100000;
type
arr=array[1..maxn] of longint;
var
a:arr;
n:longint;
procedure init;
var i:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
end;
procedure print;
var
i:longint;
begin
for i:=1 to n do
write(a[i],' ');
end;
procedure merge(l,m,r:longint);
var
i,j,k,p:longint;
b:arr;
begin
i:=l;j:=m+1;p:=0;
while (i<=m) and (j<=r) do
begin
inc(p);
if a[i]<=a[j] then
begin
b[p]:=a[i];
inc(i)
end
else
begin
b[p]:=a[j];
inc(j);
end;
end;
for k:=i to m do
begin
inc(p);
b[p]:=a[k];
end;
for k:=j to r do
begin
inc(p);
b[p]:=a[k];
end;
for k:=l to r do
a[k]:=b[k-l+1];
end;
procedure main;
var i,j,t,s:longint;
begin
t:=1;
while t<=n do
begin
s:=t;t:=2*s;i:=0;
while i+t<=n do
begin
merge(i+1,i+s,i+t);
i:=i+t;
end;
if i+s<n then merge(i+1,i+s,n);
end;
end;
begin
init;
main;
print;
end.
maxn=100000;
type
arr=array[1..maxn] of longint;
var
a:arr;
n:longint;
procedure init;
var i:longint;
begin
readln(n);
for i:=1 to n do read(a[i]);
end;
procedure print;
var
i:longint;
begin
for i:=1 to n do
write(a[i],' ');
end;
procedure merge(l,m,r:longint);
var
i,j,k,p:longint;
b:arr;
begin
i:=l;j:=m+1;p:=0;
while (i<=m) and (j<=r) do
begin
inc(p);
if a[i]<=a[j] then
begin
b[p]:=a[i];
inc(i)
end
else
begin
b[p]:=a[j];
inc(j);
end;
end;
for k:=i to m do
begin
inc(p);
b[p]:=a[k];
end;
for k:=j to r do
begin
inc(p);
b[p]:=a[k];
end;
for k:=l to r do
a[k]:=b[k-l+1];
end;
procedure main;
var i,j,t,s:longint;
begin
t:=1;
while t<=n do
begin
s:=t;t:=2*s;i:=0;
while i+t<=n do
begin
merge(i+1,i+s,i+t);
i:=i+t;
end;
if i+s<n then merge(i+1,i+s,n);
end;
end;
begin
init;
main;
print;
end.
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- POJ 2010 Moo University - Financial Aid 已被翻译
- Docker 常用管理命令——上
- 模块
- 计算机竞赛的感受
- linux不用符号实现写文件
- 归并排序
- 线段树(区间更新)小结
- C语言OJ项目参考(2290)字符串的修改
- NodeJS--package
- 计算机视觉领域稍微容易中的期刊(第一版)
- 第十六周项目3---归并排序算法的改进
- C#进制转换操作(一)
- Material Design动画(二)
- 第十六周 -项目1 -(5)直接选择排序