怎么用最快的方法判断,一个整数,是否在一堆整数中
如何用最快的方法判断,一个整数,是否在一堆整数中?
假设有一个数组 a[1000]={7,100,20}等等,再给一个数,如何不用循环的方法,直接判断此数据是否在a[1000]中?
------解决方案--------------------
------解决方案--------------------
递归比循环效率还低。
你想效率高的话,还是排序吧,排好序在去查找很快的。
------解决方案--------------------
噢,效率就换成二分递归吧
------解决方案--------------------

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