冒泡算法
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
时间复杂度
若初始文件是反序的,需要进行
算法稳定性
算法描述
JAVA
public class BubbleSort
{
public void sort(int[]a)
{
inttemp=0;
for(inti=a.length-1;i>0;--i)
{
for(intj=0;j<i;++j)
{
if(a[j+1]<a[j])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
}
pascal
procedureqsort(l,h:integer);
//假设被排序的数组是a,且快排后按升序排列)
vari,j,t,m:integer;
begin
i:=l;
j:=h;//(l,h表示快排的左右区间)
m:=a[(i+j)div2];//注意:本句不能写成:m:=(i+j)div2;
repeat
whilea[i]<mdoinc(i);
whilem<a[j]dodec(j);//降序把这个'<'换成‘>';
ifi<=jthen//注意,是’<=';
begin
t:=a[i];
a[i]:=a[j];
a[j]:=t;
inc(i);
dec(j);
end;
untili>j;//注意,是大于号,不是‘>=’;
ifj>lthenqsort(l,j);
ifi<hthenqsort(i,h);//这两行是递归寻找;//【两句if不能互换】
end;
浙公网安备 33010602011771号