我目前正在用 c 编程,我想知道是否有一种聪明的方法来过滤一个数组以使另一个数组满足特定条件。
一个示例问题是: 给定一个大小为 10 的随机整数数组,生成一个仅包含数组中偶数的数组。
由于很难知道有多少元素满足条件,所以我对数组进行了两次检查,一次统计满足条件的元素个数,然后实际将相应的元素放入数组中。
我尝试的另一件事是制作一个大小为 10 的整数数组,在第一次运行时存储所有满足条件的索引,然后在将所需元素复制到数组中时只读取所需索引数组中的元素。
一般情况下,数组可能很大,检查条件的开销可能很大,所以我认为这种方法效果不佳。
我觉得应该有更聪明、更有效的方法来做到这一点。你能帮帮我吗?
最佳答案
一般来说,在性能方面需要权衡速度和内存。
在你的双循环版本中,你牺牲了内存的速度,而在单循环版本中,你牺牲了内存来换取速度。
您可以尝试像动态分配空间这样的方法,每隔这么多元素。例如,您分配了 5 个元素的空间,当空间已满时,您再分配 5 个元素,依此类推。不幸的是,动态分配空间会占用大量时间。
除了您所描述的方法,我不知道还有什么其他方法,尽管可能有一些方法。例如,在 C++ 中,您可以使用 vector ,它会自动调整自身大小以接受新值,方法与我所描述的类似。
关于c - 在c中过滤数组的聪明方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23194569/