错误代码
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;