我试图实现我自己的冒泡排序算法而不查看任何在线伪代码,但现在我已经成功地做到了,我的代码看起来与我在网上看到的示例真的不同。它们都涉及处理一个真或假的交换变量。我的实现根本不包括它,所以我没有进行冒泡排序吗?
这是我在网上看到的一个例子:
for i = 1:n,
swapped = false
for j = n:i+1,
if a[j] < a[j-1],
swap a[j,j-1]
swapped = true
→ invariant: a[1..i] in final position
break if not swapped
结尾
这是我的实现:
void BubbleSort(int* a, int size)
{
while (!arraySorted(a, size))
{
int i = 0;
while (i < (size-1))
{
if (a[i] < a[i+1])
{
i++;
}
else
{
int tmp = 0;
tmp = a[i+1];
a[i+1] = a[i];
a[i] = tmp;
i++;
}
}
}
}
它做同样的工作,但做起来有什么不同吗?