Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180358
  • 博文数量: 28
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 954
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-21 10:28
个人简介

站在巨人的肩膀是骗人的

文章分类

全部博文(28)

文章存档

2013年(28)

分类: C/C++

2013-03-28 23:08:07

在游戏设计中,我们会遇到诸如查看全服公会列表的问题,公会列表可能会非常多。
分页的机制,对数据结构的要求是能随机查找元素,所以这个数据结构必须是连续的,我们就组织成vector vecGuild,以及一个boo bOrder表示是否被排序过(查询的时候如果发现bOrder为false就排序,并且置为true)。
你可以通过在[0 ~ Size - 1]随机查找到[PageNum * (NumPerPage - 1) ~ PageNum * NumPerPage]的子集。
但是,Guild出现属性的变化(参与排序的)都要将bOrder置为false,我们可以看出,其实这个序列是基本有序的,基本有序的用插入排序,算法效率趋近于O(N)。
还有一个关键要提一下,就是随机删除元素时,先swap到尾部,然后pop_back,这样可以避免随机删除时元素前移
阅读(1810) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~