- 问题1:选择排序中,2个变量声明在循环体内和体外消耗时间有一定差距。测试补充:数据总量是随机生成4万条,每次测试他们消耗时间各自有波动,但是一个在550毫秒以上,一个在550毫秒一下。
- 问题2:小学数学题非负数50x一定是5x的10倍,下图是选择排序和冒泡排序所消耗的时间、交换次数对比,数据总量是随机生成4万条。假设交换一次所消耗的时间为元单位时间,(元单位时间*选择交换次数)/(元单位时间*冒泡交换次数)应该是交换次数的倍数关系,但是这里次数虽是千倍级,时间消耗却只有4倍左右。
- 答案1:这是个有争论的问题,经测试,使用C#时变量放在循环体内和体外没有差别,使用Java时本人比较倾向的观点是放在循环体内。如果是基本数据类型,占用的是栈内存,生命周期在本次循环结束;如果是引用数据类型,在循环内部是不是真的消耗了内存我没测过不做说明,但是在内部有利于GC的回收,总的来说放在循环体内速度快、耗时少。
- 附:问题1、2参考博客https://www.cnblogs.com/onepixel/articles/7674659.html