标签:const 基础 int roman 相关 style 包含 实践 数据结构
博客介绍:
本文是对大二上学期通过学习过数据结构,时间复杂度,等只是后对曾经学习过的简单运算逻辑,算法进行优化。本人的编程能力有限,仅在基础之上作出浅薄的修改。
(一)、避免不必要的整数除法
整数除法是整数运算中最慢的,所以应该尽可能避免。一种可能减少整数除法的地方是连除,这里除法可以由乘法代替。这个替换的副作用是有可能在算乘积时会溢出,所以只能在一定范围的除法中使
初学时候的代码: 推荐的代码:
int i, j, k, m; int i, j, k, m;
m = i / j / k; m = i / (j * k);
(二)、while循环和do…while循环
用while循环时有以下两种循环形式:
unsigned int i; 或:
i=0; unsigned int i;
while (i<1000) i=1000;
{ do
i++; {
i- -;
} }
while (i>0);
在这两种循环中,使用do…while循环编译后生成的代码的长度短于while循环。
(三)、循环嵌套
把相关循环放到一个循环里,也会加快速度。
初学代码:
for (i = 0; i < MAX; i++)
for (j = 0; j < MAX; j++)
a[i][j] = 0.0;
for (i = 0; i < MAX; i++)
a[i][i] = 1.0;
新代码:
for (i = 0; i < MAX; i++)
{
for (j = 0; j < MAX; j++)
a[i][j] = 0.0;
a[i][i] = 1.0;
}
(四)、提升循环的性能
要提升循环的性能,减少多余的常量计算非常有用(比如,不随循环变化的计算)。
不好的代码(在for()中包含不变的if()):
for( i 。。。 )
{
if( CONSTANT0 )
{
DoWork0( i ); // 假设这里不改变CONSTANT0的值
}
else
{
DoWork1( i ); // 假设这里不改变CONSTANT0的值
}
}
推荐的代码:
if( CONSTANT0 )
{
for( i 。。。 )
{
DoWork0( i );
}
}
else
{
for( i 。。。 )
{
DoWork1( i );
}
}
如果已经知道if()的值,这样可以避免重复计算。虽然不好的代码中的分支可以简单地预测,但是由于推荐的代码在进入循环前分支已经确定,就可以减少对分支预测的依赖。
学习心得:第一次上机课,王老师告诉了我们实践对每个计算机工作者的重要性,我也第一次意识到自己对知识的灵活运用还远远不够。这一周在老师的指引下复习了
数据结构,c语言,c++等语言与算法。也在网上自主学习了一些代码改进的技巧。相信在以后的学习与运用中会有很大的提升与帮助。
标签:const 基础 int roman 相关 style 包含 实践 数据结构
原文地址:https://www.cnblogs.com/zxyayx1314/p/14508889.html