当前位置: 技术问答>linux和unix
如何用最快的方法判断,一个整数,是否在一堆整数中?
来源: 互联网 发布时间:2017-04-25
本文导语: 假设有一个数组 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...
假设有一个数组 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)...
|
不一个个比还能有别的方法?
|
弄个二叉树