搜索数组中最大的开放空间(C)?

ant*_*pug 3 c arrays data-structures

我有一个字符数组,可能看起来像:
1 0 0 1 1 1 0 0 0 1 1 0 1

我需要开发一个搜索算法来找到数组中最合适的孔.我不能使用线性搜索.(问题是......我想不出任何其他方式去做).

基本上,如果我的程序输入是3个字节长,我需要一个函数,它会在数组中找到三个0并使用该点插入数据.

Bri*_*ach 5

如果阵列是按原样给你的(你没有创建它),因为你知道你需要的洞的大小,你可以按尺寸跳跃,当你0到达时看向前看,看看是否有空间.

如果你试图找到一个3字节的洞,a[0] == 1然后你知道它不适合a[0] -> a[2].跳a[3]过去,看看是否是0; 如果是,请向前看,看看是否有3个字节的空间.

这只比通过列表开始 - 结束的蛮力方法略胜一筹,但它更好.

  • 它仍然是O(n) (2认同)