这个排序哪里错了?需要怎么改?

img

for(j=0;j<=n-i-2;j++)

双循环的冒泡排序可以看看这个:
void BubbleSort(int a[], int len)
{
int i, j, temp;
for (j = 0; j < len - 1; j++)
{
for (i = 0; i < len - 1 - j; i++)
if (a[i] > a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}

int main()
{
int arr[] = { 5, 8, 6, 3, 9, 2, 1, 7 };
int len = sizeof(arr) / sizeof(arr[0]);
int i = 0;
printf("排序前:");
for (i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
printf("\n");

BubbleSort(arr, len);
printf("排序后:");
for (i = 0; i < len; i++)
{
    printf("%d ", arr[i]);
}
printf("\n");
system("pause");
return 0;

}