在游戏设计中,我们会遇到诸如查看全服公会列表的问题,公会列表可能会非常多。
分页的机制,对数据结构的要求是能随机查找元素,所以这个数据结构必须是连续的,我们就组织成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) |