自己面试中遇到的for循环问题
来源:互联网 发布:php array to json 编辑:程序博客网 时间:2024/05/16 05:47
最近面试时,面试官问我的一个问题,如下:
for(i=0; i<n; i++)
for(
和
for(i=n; i>0; i--)
“这两个for循环,哪个的速度更快?为什么?”
“这两个for循环,哪个的速度更快?为什么?”
我的答案是:后者更快。原因是for语句括号中的三个部分中,第二个部分是进行判断的,每循环一次都要进行判断,根据判断的结果决定是否继续进行下一次循环。
前者的判断为i<n是将i和n这两个变量进行比较,计算机为了比较这两个变量的值需要内存中读取n的值,再放入寄存器中,然后再与i相减,最后判断结果是不是0,如果不是0,则继续循环,否则,则退出循环。
而后者是将i和0进行比较,任何一个CPU都有一个与0比较的指令,编译器将会使用这条指令(一般为JZ或JNZ),这样将省去读取内存的时间和两变量相减的时间。
还望有牛人指教。
- 自己面试中遇到的for循环问题
- javascript学习中遇到的for循环次数问题。
- JAVA自己面试遇到的问题
- 面试中遇到的问题
- 面试中遇到的问题
- 面试中遇到的问题
- 面试中遇到的问题
- 面试中遇到的问题
- 面试中遇到的问题
- 面试中遇到的问题
- 面试中遇到的问题
- 面试:----面试中遇到的问题
- 9*9乘法表中for循环中遇到的一点问题
- 整理一些自己的面试中遇到的问题,不定期更新。
- js初学者常遇到的一个for循环中onclick问题
- 早上遇到的问题,关于for in循环问题
- 面试中可能遇到的问题
- 面试过程中遇到的问题
- 植物大战僵尸辅助之重叠植物
- Mozilla 免费送火狐手机 刺激开发者兴趣
- 47 个树莓派项目或许能激发你的灵感
- 小组实验任务答案公布:oracle实施前准备清单
- Twitter 工程师眼中的新浪微博
- 自己面试中遇到的for循环问题
- 程序中输出的各种日志信息类并写入日志文件
- 读书笔记-Google时代的工作方法(6)
- HeapSort
- 值得一看:Android给应用定制皮肤
- 存储区域
- Little endian vs Big endian
- 11/05 热点
- 关于Android Canvas.drawText方法中的坐标参数的正确解释