首页 文章
  • 8 votes
     answers
     views

    使用二进制搜索优化大型if-else分支

    所以在我的程序中有一个if-else分支,大约有30个if-else语句 . 这部分每秒运行超过100次,因此我将其视为优化的机会,并使用函数指针数组(实际上是 balancer 树映射)进行二进制搜索,而不是进行线性if-else条件检查 . 但它的速度比以前的速度快了约70% . 我做了一个简单的基准测试程序来测试这个问题,它也给出了类似的结果,if-else部分运行得更快,无论是否有编译器优...
  • 0 votes
     answers
     views

    将顺序搜索与二进制搜索进行比较

    假设我有一个未排序的实数数组,长度为 N . 我想找到最大的非正数 y ,然后在数组中找到小于 y 的第一个数字 x ,并且第一个数字 z 大于 y . 我想理论上将顺序搜索与二进制搜索非渐近地比较(即不仅仅是用大的Os)来找到这些值 . 陈述是否合理: 顺序搜索需要 0 排序比较, 3*N 搜索比较(三次连续搜索) . 二进制搜索需要 2*N*ln(N) ≈ 1.39*N...
  • 0 votes
     answers
     views

    bool方法和out参数

    所以我有这个代码 //in the Search class public bool LinearSearchEx (int target, int[] array, out int number) { number = 0; for (int i = 0; i < array.Length; i++) { if (target == array[...
  • 0 votes
     answers
     views

    当顺序搜索优于二分搜索时?

    我知道: linear search 向下查看列表,一次查看一个项目,而不跳跃 . 在复杂性方面,这是一个O(n)搜索 - 搜索列表所花费的时间会以与列表相同的速率变大 . binary search 是从排序列表的中间开始,并查看's greater than or less than the value you'是否正在查找,这将确定该值是否在列表的第一个或后半部分中 . 跳到子列表的中间位置...
  • 0 votes
     answers
     views

    搜索方法会创建二元运算符错误

    我正在编写一种方法,它比简单的线性搜索更有效地搜索已排序的数组 . 想法是用户将输入他们正在定位的“目标”值,并且数组将根据值向上或向下移动数组,直到中点(中)找到它 . 但是,当我尝试将中间值与目标进行比较时,如果“目标”小于或大于“中”,我会继续收到错误的操作数错误,因为我将目标与int,当我真正想要收集“mid”与target相比的值是否大于0或小于0.因此“mid”可以决定是否向上或向下移...
  • 0 votes
     answers
     views

    测量二进制和线性搜索的性能时会产生奇怪的时间

    以下程序按预期/要求工作,但执行时间没有意义 . 在我的Data Structures类中,我们必须编写一个程序来测试算法效率 . 取一个数组并用随机数填充它,然后返回所有元素的计数等于另一个随机数 . 我们必须使用线性搜索然后进行二分搜索,其中包含100个元素的数组,然后是1k,然后是10k,然后是100k和1m元素 . 我们班上的大多数人都注意到,线性搜索10k元素所需的时间比100k元素要长...
  • 1 votes
     answers
     views

    线性搜索和二进制搜索之间的权衡

    我有一个要在可变长度的数据集中搜索的元素列表 . 我已经尝试过二分搜索,我发现当目标是搜索元素列表时,它并不总是有效的 . 我做了以下研究并得出结论,如果要搜索的元素数量少于数据的5%,则二分搜索是有效的,否则线性搜索更好 . 以下是详细信息元素数量:100000要搜索的元素数量:5000迭代次数(二进制搜索)= log2 (N) x SearchCount=log2 (100000) x 50...

热门问题