pascal冒泡排序和选择排序 代码

谢谢...
2026年09月23日 11:23
有1个网友回答
网友(1):

1楼写的冒泡没问题,选择有些问题,我等会更正。2楼的说法就有问题,显然冒泡和选择排序都为稳定排序,你何来选择不稳定之说?快速排序才是不稳定排序。但是二楼的两种排序都对。
冒泡:
for
i:=1
to
n-1
do
for
j=i+1
to
n
do
if
a[i]>a[j]then
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
end;
选择:
for
i:=1
to
n-1
do
begin
min:=99999;
for
j:=i+1
to
n
do
if
min>a[j]then
begin
min:=a[j];
min_j:=j;
end;
a[min_j]:=a[i];
a[i]:=min;
end;
实际上还有更好的方法,一下是我写的排序,比他们的快一些,因为交换次数少。
以数组a存储待排序元素,n为元素总个数,i,j,k,tmp为变量。
for
i:=1
to
n-1
do
begin
k:=i
for
j:=i+1
to
n
do
if
a[k]>a[j]
then
k:=j;
tmp:=a[i];
a[i]:=a[k];
a[k]:=tmp;
end;
这个你可以理解为冒泡,也可以理解为选择,总而言之相比于冒泡和选择快就是了。