include
void sort(int * a, int len)
{
int i, j, t;
for (i=0; i<len-1; ++i)
{
for (j=0; j<len-1-i; ++j)
{
if (a[j] > a[j+1]) // >表示升序 <表示降序
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
int main(void)
{
int a[6] = {10, 2, 8, -8, 11, 0};
int i = 0;
sort(a, 6);
for (i=0; i<6; ++i)
{
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
看不懂for的内层循环,为什么要用j<len-1-i,看了下输出结果,发现,没有-1的话,那么结果会变成-8 0 1 2 8 10,就不是程序要的-8 0 2 8 10 11了,看定义是说内层循环时算每i趟排序次数,而这个次数是(N-i)趟,外层是看明白,就是整不明白内层为什么要-1??刚学不懂这些,麻烦诸位解答一二!多谢!