恭喜,你发布的帖子
发布于 2023-04-05 17:56:03
74楼
问题1:取指针地址为什么要放在第一层的for循环里面?放在for循环外面不是执行效率更高吗?
答:可以看这个操作的结果放到了累加器里,这些累加器在内层FOR里经过运算,值已经出现了变化。所以再回到外层FOR时自然要再取一次地址。所以把这个取指针地址的这个过程放到FOR循环内的话,是无法正常工作的。你可以测试一下,之后把测试结果说一下。
问题2:为什么第一层和第二层的for循环的次数都是一样的?第二层的循环次数不是应该是 #iDataCount:LW2-#sIndx1:LW29的次数吗?
答:首先肯定一下你的问题,你说的对。我们先来看一下C语言的冒泡排序算法代码
//冒泡排序
void BubbleSort(int* a, int n)
{
int end = 0;
for (end = n - 1; end >= 0; end--)
{
int exchange = 0;//记录该趟冒泡排序是否进行过交换
int i = 0;
for (i = 0; i < end; i++)
{
if (a[i]>a[i + 1])
{
Swap(&a[i], &a[i + 1]);
exchange = 1;
}
}
if (exchange == 0)//该趟冒泡排序没有进行过交换,已有序
break;
}
}
看完C代码,再来回答你的问题。为什么第一层和第二层的for循环的次数都是一样的?因为200smart的数据不支持数组下标,虽然用200smart勉强能实现了此功能,但是划不来,不如简单多循环几次。同时这个问题的第2个问号也是这个原因。
第二个问题回答完,第三个问题也就没必要回答了。
请填写推广理由:
分享
只看
楼主