前注:

这是自己平时写的一些小代码,未必有用及符合设计原则,若有不妥之处,还请大家指教。

说明:

此算法与另一个通用快速排序算法采用了相似的设计思想:对排序和查找算法而言,虽然其逻辑固定,但由于数据源与比较或搜索逻辑的差异,而数据处理的过程又与算法逻辑相藕合,因而不得不对不同的数据源及比较逻辑作不同的实现。也因此,若要抽象出算法逻辑,则必须提取数据操作与比较接口。

对二分查找算法而言,可以确定的一点是数据源是可索引的。算法通过尝试比较不同索引处的数据来确定目标数据的方向;另一方面,算法的使用方必定熟悉数据源,知道索引便能确定具体数据。

因此,此算法忽略具体的数据源,而要求调用者告之数据源的索引范围,并提供对指定索引处数据进行比较的逻辑(作为委托传入)。

这样,算法只需操作索引,而得以与具体的数据源隔离,比较逻辑与可以由用户自定义。

示例:

SearchAlgorithm.BiSearchMatch Match = delegate(int Index)
            {
                
return BranchID.CompareTo(AllBranchList[Index].ID);
            };
ElementIdx 
= SearchAlgorithm.BiSearch(0, AllBranchList.Count - 1, Match);

相关文章:

  • 2021-11-08
  • 2022-03-03
猜你喜欢
  • 2021-12-10
  • 2021-12-11
  • 2022-12-23
  • 2022-12-23
  • 2021-06-13
  • 2022-12-23
  • 2021-05-19
相关资源
相似解决方案