求大话数据结构上的冒泡排序代码的解释 第一个循环限制条件不太懂 求哪位大侠解释一下!感激不尽!
第一个for循环的限制条件是i<l->length如果这样的话那最后一个元素不就循环不到了?书上是将第一个数组空间r[0]不用,直接从第二个空间存储要排序的第一个元素最后...
第一个for循环的限制条件是i<l->length 如果这样的话
那最后一个元素不就循环不到了?
书上是将第一个数组空间r[0]不用, 直接从第二个空间存储要排序的第一个元素
最后一个元素是r[l->length] 照书上这个代码 for(i=1;i<l->length;i++)
最后一个元素不是循环不到 是不是说最后一个元素不需要循环到 循环到了最后倒数第二个元素就可以了?求大侠指教!
《大话数据结构》上定义的顺序表结构是
#define MAXSIZE 10
typedef struct
{
int r[MAXSIZE+1] ;/* 用于存储要排序数组,r[0]用作哨兵或者临时变量 */
int length;
}sqlist;
void bubblesort(sqlist *L)
{
int i,j;
for(i=1;i<l->length;i++) ---->>>这一步的限制条件为什么不是i<=l->length ?
{
for(j=l->length-1;j>=i;j--)/* j从后往前循环 */
{
if(l->r[j]>l->r[j+1]) /* 若前者大于后者 */
{
swap(l,j,j+1); /* 交换两者的值 */
}
}
}
} 展开
那最后一个元素不就循环不到了?
书上是将第一个数组空间r[0]不用, 直接从第二个空间存储要排序的第一个元素
最后一个元素是r[l->length] 照书上这个代码 for(i=1;i<l->length;i++)
最后一个元素不是循环不到 是不是说最后一个元素不需要循环到 循环到了最后倒数第二个元素就可以了?求大侠指教!
《大话数据结构》上定义的顺序表结构是
#define MAXSIZE 10
typedef struct
{
int r[MAXSIZE+1] ;/* 用于存储要排序数组,r[0]用作哨兵或者临时变量 */
int length;
}sqlist;
void bubblesort(sqlist *L)
{
int i,j;
for(i=1;i<l->length;i++) ---->>>这一步的限制条件为什么不是i<=l->length ?
{
for(j=l->length-1;j>=i;j--)/* j从后往前循环 */
{
if(l->r[j]>l->r[j+1]) /* 若前者大于后者 */
{
swap(l,j,j+1); /* 交换两者的值 */
}
}
}
} 展开
3个回答
展开全部
这一步的限制条件为什么不是i<=l->length ?
可以这样理解:
前面的循环,是i作为被比较的,
j是i后面的所有的元素,
i和j比较。
如果有等号=,那么后面j就没得比了,所以没必要啊、
可以这样理解:
前面的循环,是i作为被比较的,
j是i后面的所有的元素,
i和j比较。
如果有等号=,那么后面j就没得比了,所以没必要啊、
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个算法是依次找出最小元素,线性表有l->length个元素,前面的l->length-1次已经依次找出了前面l->length-1个最小的,剩下的一个自然是最大的了,也就不用比了。
也不能比,假如i<=l->length,也就是可以i=l->length,又有j>=i,若j=i=l->length时,r[j+1]不就溢出了吗?
也不能比,假如i<=l->length,也就是可以i=l->length,又有j>=i,若j=i=l->length时,r[j+1]不就溢出了吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询