读书人

关于冒泡排序的若干有关问题

发布时间: 2013-06-25 23:45:41 作者: rapoo

关于冒泡排序的若干问题
# include <stdio.h>

//冒泡排序
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;
}

Q1:这里面的sort(a,6);分别传导至函数int *a int len?
Q2: 函数中i是否为比较的次数?j理解成a[]的地址吗?
Q3: 第一个for (i=0; i<len-1; ++i)执行完后,len等于5,再执行for (j=0; j<len-1-i; ++j)时,len得值是否为6-1-0还是5?
Q4:a[j] > a[j+1] 是否理解为 第几个数,和夏一个数座比较?



[解决办法]
1 不明白你的意思
2 i用来控制循环,j是数组的索引而已
3 len的值没有改变,循环也不是你理解的那样,应该是里边的循环执行一遍以后,才会执行一次外边的循环,外边的循环只起到让里边的循环执行n次的作用
4 数组的第j和元素 > 第j+1 个元素

读书人网 >C++

热点推荐