惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
MyScale Blog
MyScale Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
Last Week in AI
Last Week in AI
罗磊的独立博客
G
Google Developers Blog
Y
Y Combinator Blog
博客园 - 【当耐特】
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
J
Java Code Geeks
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
美团技术团队
宝玉的分享
宝玉的分享
Jina AI
Jina AI
小众软件
小众软件
T
Tailwind CSS Blog
A
About on SuperTechFans

博客园 - Kevin-moon

在IE中本地浏览与服务器浏览同一Html后,出现了奇异的结果 如何避免JQuery Dialog的内存泄露 JQuery另类视角-动态执行脚本的BUG JQuery另类视角-动态扩展对象 - Kevin-moon - 博客园 如何重构代码-简单、灵活的实现对象复制 如何重构代码-重构计划 如何重构代码-思路和方法 谈谈多线程的思维方式 [ASP.NET MVC]-理解Routing 笑死人的十项大奖 深入APM,实现自己的APM [Windbg基础]-了解Symbols 深入线程,实现自定义的SynchronizationContext 重温ASP.NET的配置信息(简单、常用) 奇妙的SynchronizationContext 线程之间的通讯---SynchronizationContext "对象"到"山寨对象"的完整转换 我真的就只能在远方看你吗?!!! "测试驱动开发(TDD)" 动态进行"自定义公式"计算
简单的数据移动算法(C#)
Kevin-moon · 2009-04-14 · via 博客园 - Kevin-moon

      最近一直都在忙于项目的版本开发,现在终于有时间闲下来写点东西了!
      数据移动算法,其实是一个比较简单的程序,当移动的数据是一个的时候,只是移动的数据和被移动的数据相互交换下排序值Seq就可以了,不过当移动的数据不止一个的时候,有多个数据,而且这些数据可能是连续的,也可能是不连续的,这个时候虽然也不复杂,但是还是有点烦琐的。前段时间我正好碰到了个这样的需求,就写了个比较通用的算法。

算法效果演示:


1、在上述的数据中,同时向上移动[Key0]、[Key2,Key3,Key4]、[Key9]这三部分数据

2、在上述的数据中,同时向下移动[Key0]、[Key1,Key2,Key3]、[Key9]这三部分数据

算法代码分析:



      通过上面的类图可以基本了解实现的结构,MoveSeqArithmeticItem是移动顺序算法中的数据元素实体,其中Obj是数据对象,ObjKey是数据对象中的关键ID,其实该类就是中间的一个包装,只是提供了排序字段Seq和AfterSetSequenceEvent事件(设置序号后触发的事件)
      MoveSeqArithmetic是算法的核心,需要特别说明下的是SequenceAreaEntity类,该类是数据集合中连续区域对象的结构,目的是方便对于多个连续或不连续的数据进行操作。MoveSeqArithmetic中移动的具体实现还是看下面的图更加清晰,

核心代码:MoveUpByKeys

Code

详细的代码下载下面的代码项目进行了解。

测试DEMO:

Code

执行结果上面已经展示。


      OVER!

下载代码:TestPerformance.rar