日期:2014-05-16  浏览次数:20607 次

如何用最快的方法判断,一个整数,是否在一堆整数中?
假设有一个数组 a[1000]={7,100,20}等等,再给一个数,如何不用循环的方法,直接判断此数据是否在a[1000]中?
数据

------解决方案--------------------
int find_num(int num, int *num_array, int array_size, int array_index)
{
  if ( num_array == NULL 
------解决方案--------------------
 array_index >= array_size )
  {
    return -1;     
  }
  
  if ( num == num_array[array_index] )
  {
    return array_index;      
  }
  
  return find_num(num, num_array, array_size, array_index + 1);
}

------解决方案--------------------
递归比循环效率还低。

你想效率高的话,还是排序吧,排好序在去查找很快的。
------解决方案--------------------
噢,效率就换成二分递归吧
------解决方案--------------------

嗯,先排序,再二分查找。
------解决方案--------------------
引用:
噢,效率就换成二分递归吧


引用:

嗯,先排序,再二分查找。


大家想法是不是有点惯性思维了, 这个也不是有序数组的查找哇...
直接遍历挨个比, 也无非是O(n);
排序再二分查找, 不是变成了O(n*logn) + O(logn)...
------解决方案--------------------
不一个个比还能有别的方法?
------解决方案--------------------
弄个二叉树