由希尔排序算法实现引起的for循环执行过程及i++和++i异同的提问——打打基础

昨天对希尔排序的算法讨论中出现了两个问题,一个是对这个算法实现的不理解;另一个是对for循环的执行过程和i++及++i在其中运用的不理解。

前者主要是大家对c语法有些陌生,将程序分块来看就会容易些!代码及实现过程如下图所示:

4

5

从上图代码很容易看出希尔排序的思想实现主要是在序号1的while循环中完成的。序号1循环控制的是增量序列的变化,序号2控制的是在某个增量值下交换待排序序列的每一组,序号3、4控制的是每组值是应该交换及交换运算!

对于for循环及执行过程如下图所示:

7

而对于其中的i++换成++i及其所放位置在for循环中是一样的!它们不同用法之一是在计算问题中使用时!验证过程如下所示:

#include"stdio.h"
void main()
{
	int i;
	//验证for循环的执行过程和i++及++i的所放位置及用法异同

	//使用i++,在条件中
	for(i=0;i<2;i++)
	{
		printf("%d/n" , i);
		getchar();
	}
	printf("i++ in condition is ok");
	printf("/n","");
	getchar();

	//使用++i,在条件中
	for(i=0;i<2;++i)
	{
		printf("%d/n",i);
		getchar();
	}
	printf("++i in condition is ok");
	printf("/n","");
	getchar();

	//使用++i,在循环体内
	for(i=0;i<2;)
	{
		printf("%d/n",i);
		getchar();
		++i;
	}
	printf("++i in loop-body is ok");
	printf("/n","");
	getchar();

	//使用i++,在循环体内
	for(i=0;i<2;)
	{
		printf("%d/n",i);
		getchar();
		i++;
	}
	printf("i++ in loop-body is ok");
	printf("/n","");
	getchar();

	//======================
	//验证i++和++i
	i=0;
	int count=0;
	count=1+i++;
	printf("count值是:%d/n",count);
	printf("i值是:%d/n",i);
	printf("i++ is ok");
	printf("/n","");
	getchar();
	
	i=0;
	count=0;
	count=++i+1;
	printf("count值是:%d/n",count);
	printf("i值是:%d/n",i);
	printf("++i is ok");
	getchar();
}

 

执行结果如下图所示:

 

1 

通过讨论不仅能够带动参与人积极思考,而且还能学到一个人看书所不能看到学到的知识!

基础还很欠缺,要多思考多讨论多练习……

 

//代码证明补充2010-10-26

i++(即上述运算执行步骤中的3)在循环完之前运行了一次,中途中断的话不会运行i++了

结果:

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值