对减面算法的优化

博主分享了对减面算法的优化过程,为提高效率,从原本使用Dictionary转向OrderedDictionary,利用其红黑树结构减少排序时间。接着对比了多种查找算法,如顺序查找、二分查找、插值查找等,最终在数据较规律时发现插值查找效率优于二分查找,但当数据量超过10w时仍存在问题。目前斐波拉契查找尚未实现,文中引用了他人代码进行学习。
摘要由CSDN通过智能技术生成

之前发了一个减面算法,但是效率不怎么样。最近又在优化。为了不再进行Dictionary的重新排序(耗时最多的地方),改用OrderedDictionary进行插入删除操作,这样应该能节约不少时间。稍微了解了下,OrderedDictionary是采用红黑树的数据结构,效率应该是很不错的。那么,之前耗时最严重的重新排序变成了查找需要插入的位置。网上找了找最常见的几种查找算法,顺序查找(效率太低,淘汰),二分查找,插值查找,斐波拉契查找,二叉搜索树查找,平衡二叉树查找。。。好吧,一大堆。因为如果要用树结构,就需要重新存储数据,并定义结点,暂时放一边,先实现了二分查找和插值查找。


 public static int InsertID(ref OrderedDictionary CostList,float target,int min,int max) {
        int mid = (min + max) >>1;
        
        if (target <= (float)CostList[0]) {
            return 0;
        } else if (target >= (float)CostList[CostList.Count-1]) {
            return CostList.Count - 1;
        }
        if (min > max)
        {
           
            return 0;
        }
        if (target == (float)CostList[mid] || (target >= (
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值