I have this bubble sort code that is just supposed to sort elements of an array in ascending order:
Code:
#include <stdio.h>
int main(void)
{
int i = 0, didSwap = 0, temp = 0, inner = 0, outer = 0;
char buffer[100] = {0};
int firstArray[10] = {0};
for (i = 0; i < 10; ++i)
{
printf("firstArray[%d]: ", i);
fgets(buffer, sizeof(buffer), stdin);
sscanf(buffer, "%d", &firstArray[i]);
}
for (outer = 0; outer < 9; outer++)
{
didSwap = 0;
for (inner = outer; inner < 10; inner++)
{
if (firstArray[inner] < firstArray[outer])
{
temp = firstArray[inner];
firstArray[inner] = firstArray[outer];
firstArray[outer] = temp;
didSwap = 1;
}
}
if (didSwap == 0)
break;
}
for (i = 0; i < 10; ++i)
printf("\nfirstArray[%d] = %d", i, firstArray[i]);
return (0);
}
The sorting works fine when the increment operators inner++ and outer++ are in postfix form. However, when I change it to prefix form ++inner and ++outer it no longer sorts. I always thought that it didn't matter which form you used in the third part of a for statement.
Can someone enlighten me on to why this happens? Thanks in advance.