关于Pascal程序中的冒泡程序
答案:6 悬赏:60 手机版
解决时间 2021-04-15 05:23
- 提问者网友:龅牙恐龙妹
- 2021-04-14 09:16
关于Pascal程序中的冒泡程序
最佳答案
- 五星知识达人网友:末日狂欢
- 2021-04-14 10:04
const
N=50;
var
a:array[1..N] of longint;
temp,i,j:integer;
begin
for i:=1 to N do read(a[i]);
writeln;
for i:=N-1 downto 1 do
for j:=1 to i do
if a[j] begin
temp:=a[j];
a[j]:=a[j+1];
a[j+1]:=temp
end;
for i:=1 to N do write(a,' ');
writeln;
readln;
end.
框.....好象不是冒泡吧......不过,作为后来人,我强烈建议你不要去深研冒泡,不知道都可以,最多的是选择排序.....
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]给分谢谢!
N=50;
var
a:array[1..N] of longint;
temp,i,j:integer;
begin
for i:=1 to N do read(a[i]);
writeln;
for i:=N-1 downto 1 do
for j:=1 to i do
if a[j] begin
temp:=a[j];
a[j]:=a[j+1];
a[j+1]:=temp
end;
for i:=1 to N do write(a,' ');
writeln;
readln;
end.
框.....好象不是冒泡吧......不过,作为后来人,我强烈建议你不要去深研冒泡,不知道都可以,最多的是选择排序.....
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]给分谢谢!
全部回答
- 1楼网友:人间朝暮
- 2021-04-14 14:58
program maopao;
type
shuzu=array [1..5] of integer;
var
i,j,h:integer;
a:shuzu;
begin
for i:=1 to 5 do
read(a[i]);
readln;
for i:=1 to 4 do
for j:=i+1 to 5 do
if a[j]>a[i] then
begin
h:=a[i];
a[i]:=a[j];
a[j]:=h;
end;
for i:=1 to 5 do
write(' ',a[i]);
readln;
end.
type
shuzu=array [1..5] of integer;
var
i,j,h:integer;
a:shuzu;
begin
for i:=1 to 5 do
read(a[i]);
readln;
for i:=1 to 4 do
for j:=i+1 to 5 do
if a[j]>a[i] then
begin
h:=a[i];
a[i]:=a[j];
a[j]:=h;
end;
for i:=1 to 5 do
write(' ',a[i]);
readln;
end.
- 2楼网友:胯下狙击手
- 2021-04-14 14:47
我觉得你可以用选择排序,下面一位搞错了,就是选择.
- 3楼网友:独行浪子会拥风
- 2021-04-14 13:55
冒泡法:这是最常用的一种排序方法,其实质是:先把数据存放在数组中,然后从第一个开始,分别与其后所有数据进行比较,如果第一个比其后某个数据小,则交换它们的值,一直到第一个与其后所有数据比较完,这时第一个数据就是最大的一个;然后再把第二个数据再与其后数据进行比较,比较完后,第二个数据则为第二大的,这样直到倒数第二个数据比较完后,整个数组就已经按从大到小的顺序排列了。其作用示意如下:
假设我们已经把6个数据分别存放在N[1]至N[6]中,其值分别为:3,1,5,9,2,6。
交换前的值为: 3,1,5,9,2,6
第一步,把第一个值与其后第一个进行比较,这时3>1,所以值不变: 3,1,5,9,2,6
第二步:把第一个值与其后第二个进行比较,这时3<5,所以值交换: 5,1,3,9,2,6
第三步:把第一个值与其后第三个进行比较,这时5<9,所以值交换: 9,1,3,5,2,6
…… ……
当第一个值与其后所有值比较完后,第一个值已经是最大的,数组值为: 9,1,3,5,2,6
这时,重复上述第一步的操作,只是把第一个值换成第二个值,第一个值即第二个值与其后第一个值进行比较,这时1<3,所以交换其值: 9,3,1,5,2,6
第二个值与其后所有值比较完后,数组值为: 9,6,1,3,2,5
再重复进行第三个值与其后值的比较,直到第五个值与第六个值比较完后,这时数组的值已经变为: 9,6,5,3,2,1
至此,数组已经按从大到小的顺序排好了。
程序如下 :[例6、1]
Var n:array[1..10] of integer;
I,j,t:integer;
Begin
For I:=1 to 10 do Readln(n[I]);
For I:=1 to 9 do begin
For j:=I+1 to 10 do begin
If n[I] T:=n[I];
N[I]:=n[j];
N[j]:=t;
End;
End;
End;
For I:=1 to 10 do begin
Write(n[I]:5);
End;
End.
假设我们已经把6个数据分别存放在N[1]至N[6]中,其值分别为:3,1,5,9,2,6。
交换前的值为: 3,1,5,9,2,6
第一步,把第一个值与其后第一个进行比较,这时3>1,所以值不变: 3,1,5,9,2,6
第二步:把第一个值与其后第二个进行比较,这时3<5,所以值交换: 5,1,3,9,2,6
第三步:把第一个值与其后第三个进行比较,这时5<9,所以值交换: 9,1,3,5,2,6
…… ……
当第一个值与其后所有值比较完后,第一个值已经是最大的,数组值为: 9,1,3,5,2,6
这时,重复上述第一步的操作,只是把第一个值换成第二个值,第一个值即第二个值与其后第一个值进行比较,这时1<3,所以交换其值: 9,3,1,5,2,6
第二个值与其后所有值比较完后,数组值为: 9,6,1,3,2,5
再重复进行第三个值与其后值的比较,直到第五个值与第六个值比较完后,这时数组的值已经变为: 9,6,5,3,2,1
至此,数组已经按从大到小的顺序排好了。
程序如下 :[例6、1]
Var n:array[1..10] of integer;
I,j,t:integer;
Begin
For I:=1 to 10 do Readln(n[I]);
For I:=1 to 9 do begin
For j:=I+1 to 10 do begin
If n[I]
N[I]:=n[j];
N[j]:=t;
End;
End;
End;
For I:=1 to 10 do begin
Write(n[I]:5);
End;
End.
- 4楼网友:鸠书
- 2021-04-14 12:21
建议跳过冒泡不学。
直接学快速排序,堆排序……
直接学快速排序,堆排序……
- 5楼网友:风格不统一
- 2021-04-14 11:20
program maopao;
type
shuzu=array [1..50] of integer;
var
i,j,h:integer;
a:shuzu;
begin
for i:=1 to 50 do
read(a[i]);
readln;
for i:=1 to 49 do
for j:=i+1 to 50 do
if a[j-1] begin
h:=a[j-1];
a[j-1]:=a[j];
a[j]:=h;
end;
for i:=1 to 50 do
write(' ',a[i]);
readln;
end.
我编译器坏了 没调试的
type
shuzu=array [1..50] of integer;
var
i,j,h:integer;
a:shuzu;
begin
for i:=1 to 50 do
read(a[i]);
readln;
for i:=1 to 49 do
for j:=i+1 to 50 do
if a[j-1] begin
h:=a[j-1];
a[j-1]:=a[j];
a[j]:=h;
end;
for i:=1 to 50 do
write(' ',a[i]);
readln;
end.
我编译器坏了 没调试的
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯