冒泡排序的过程很简单:
比较表中的相邻 元素,如果逆序则交换。重复多次后,最终,最大元素就沉到了列表的最后一个位置。
第二遍操作将第二大的元素沉下去。
直到n-1遍以后,就 完成了排序。
第i遍冒泡排序可以用下面的图来表示:
已经位于最终的位置上
代码 :
void BubbleSort(int a[],int len)
{
int i,j;
int temp=0;
for (i=0;i<len;i++)
{
for (j=0;j<len -i-1;j++)
{
if (a[j]>a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
return;
}
对于所有规模为n的数组 来说,该冒泡排序版本的键值比较次数都是相同的:
但键的交换次数取决于特定的输入,最坏的情况就是遇到降序的数组,这时键的交换次数和比较次数是一样的。
在最坏情况和平均情况下, 属于。