【发布时间】:2020-08-27 20:58:43
【问题描述】:
我想做一大段代码,直到数组 1 的至少一个元素等于数组 2 的元素 1。
如果可能的话,我要求社区分享在“同时”执行此操作的最佳(处理速度最快)方法
总结一下:
while (none of the elements from arr1 is equal to any of arr2)
{
(code)
}
原因:在我的代码中,根据用户设置的某些维度,我的程序可能需要多次进行这种 n^2 复杂度比较,所以我正在寻找一种方法让它像我一样轻可以。
很抱歉,如果此类问题不适合 StackOverflow,请告诉我。
编辑:我不提供有关数组的信息是不好的。正如我所说,它的尺寸可能会根据用户的选择而有所不同,但每个尺寸都应该在 3 到 1000 之间。两个整数数组。
它们的价值确实会发生变化,维度越大,发生的可能性就越大。
【问题讨论】:
-
arr1和arr2的大小是多少——数十、数百、数千、数百万个元素?数组中元素的类型是什么?它们是简单的整数还是完整的结构,还是什么?使用散列、比较散列并仅在散列相等时检查完全相等是否有意义?任何一个数组都会改变吗?每个数组变化多少? -
使用哈希映射元素到整数对并不难。当您将 E 添加到 arr1 时,增加条目 E->
的 count1。对于 arr2 和 count2 也是如此。还要保持两个计数都大于零的条目数的单个整数总 T。每次 arr1 或 arr2 中的条目更改或添加/删除时,您都可以在恒定时间内更新这些结构。然后循环变为 while (T > 0)。 OTOH,如果代码块又大又慢,这可能是过早的优化。如果块需要一秒钟才能运行,比较一百万个整数可能很好。 -
您可以对这些数组进行排序,否则它们无法更改?因为如果你能对它们进行排序,它可能会容易得多。
-
据我所知,您无法对它们进行排序
标签: c optimization