首页  >   经验  >   高!最全面经典的轮流策略实现技巧

高!最全面经典的轮流策略实现技巧

查看 codexia 的博客 2015-06-27 01:04:41 932
轮流   策略   遍历  
手机阅读 | 转发赚积分
手机收藏 | 分享给好友
简介全面介绍了入门级(条件判断)、高手级(取余)和大师级(位与)的轮转策略实现,并含有代码。并且针对效率原理以及一步步的改进原理和原因都做了细致的介绍。

    为了实现双缓冲机制,需要在内存使用两个数组,然后轮流切换使用。因为此轮流切换在循环内部执行,而循环会涉及大量的循环,因此在循环中对效率是非常注重的。稍有疏忽,性能大打折扣。
而实现双缓冲,则需要使用两个数组。在循环中,先操作第一给数组,然后切换到第二个数组,这样就随着循环的索引不断的递增,可以不断的切换。这里只讨论这个轮转模型,双缓冲就是典型的两个元素的轮转实现,外加一些同步控制而已。
我们对于此类问题,通常会想到,用一个布尔变量模型来做两个元素的切换。我们先只是讨论两个元素的。然后再加以扩展。

    对于初学者或者经验不足的朋友来讲,一开始想到的是用布尔变量,比如代码如下:

bool bIsDo = false;
for(int i=0;i<1000000000;i++)
{
    if(bIsDo == true)bIsDo = !bIsDo;
    //后面是其他操作
    ......
}

    再有一点基础的就是稍微调整一下代码,说明他注意到一个编程代码习惯,防出错:

bool bIsDo = false;
for(int i=0;i<1000000000;i++)
{
    if(true == bIsDo)bIsDo = !bIsDo;
    //后面是其他操作
    ......
}

    然后再有一点经验的人,理解稍微深一些,就简化了代码。因为布尔值本来就是对错,加入==判断,多此一举。然而对于很多初学者,为了一眼看去是什么意思,就加了==判断。代码如下:

bool bIsDo = false;
for(int i=0;i<1000000000;i++)
{
    if(bIsDo)bIsDo = !bIsDo;
    //后面是其他操作
    ......
}

    这样写语法确实没有错。我们不能说什么。然而有时候对于效率来讲,是非常重要的。因此,上面的代码看上去没什么,实则对效率大打折扣。没经验的人也想不出能如何改进了。
    而这种轮转的策略,就是状态的反转,仅此而已。因为这个是两个元素的,不需要其他的考虑。这样的反转代码也很简洁。然而有些装逼的写出了如下代码:

1.微信扫码
2.点击按钮,粘贴命令
自动刷新 手动刷新
命令:rd eY~D[ 复制
提示:如果您发送了命令,自动刷新会展开全文。自动刷新最多60秒,超过60秒请点击手动刷新。
创作不易,汗水不止!为防止劳动果实被爬虫窃取,开启了反爬机制,需要您发送命令继续阅读。取关会再次出现此提示。一段时间后出现此提示,请再次发送即可。如有问题,请加客服微信Freeme007处理。感谢您的理解。
标注
评论
站内搜
百度搜
传送到手机
手机扫码,识别文字,完成传送x
加载中...
标注内容x
加载中...
添加标注x
文章标题:高!最全面经典的轮流策略实现技巧
文章地址:http://www.cjjjs.com/article/62720154141294
转载到个人博客,请在文末带上右侧内容(含超链接):本文转载自:高!最全面经典的轮流策略实现技巧
收藏 0 点赞 0
公众号
微信赞赏
支付宝赞赏
领支付宝大红包
QQ群

相关阅读

  1. vector遍历时删除元素后崩溃分析 查找全网同类文章
  2. 循环遍历结构体的实现方法和代码实现 查找全网同类文章
  3. 遍历的xml文件的帮助库xmlhelper 查找全网同类文章
  4. 数据结构笔记分享:36 判断整数序列是不是二叉搜索树的后序遍历结果 查找全网同类文章
  5. 数据结构笔记分享:33 如何不用递归实现二叉树的前序/后序/中序遍历? 查找全网同类文章
  6. MFC实现递归遍历文件夹内的所有文件夹和文件 查找全网同类文章
  7. 数据结构笔记分享:14 二叉树的遍历(利用函数指针) 查找全网同类文章
  8. 数据结构笔记分享:13 图的遍历宽度优先遍历 查找全网同类文章
  9. 数据结构笔记分享:12 图的遍历深度优先搜索算法 查找全网同类文章
  10. 数据结构笔记分享:11 图的遍历简单介绍 查找全网同类文章
分享到:
分享文章[高!最全面经典的轮流策略实现技巧]到QQ空间

相关阅读

猜您感兴趣