錯誤代碼
int i,j,temp,exchange;
for (i = 0;i < n-1;i++)
{
exchange = 0;
for (j = n-1-i;j > 0;j--)
{
if (a[j] < a[j-1])
{
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
exchange = 1;
}
}
if (exchange == 0)
{
return;
}
}
return;
錯誤地點,第二個for循環,冒泡排序每次都應該從最下面也就是最後一個元素開始,所以j的初始值不能變。
正確代碼
int i,j,temp,exchange;
for (i = 0;i < n-1;i++)
{
exchange = 0;
for (j = n-1;j > i;j--)
{
if (a[j] < a[j-1])
{
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
exchange = 1;
}
}
if (exchange == 0)
{
return;
}
}
return;