<分区>
我有两个版本的 find 函数,它们都在数组中搜索整数值并返回它的位置(如果存在)。函数 find1()
将在最坏情况下搜索多达 N 个元素,另一方面 find2()
函数将搜索多达 N/2 最坏情况下的元素。这是否意味着 find2()
函数的复杂度降低到 O(N/2)?
我假设数组 arr
包含非重复值。
函数:find1()
int find1(int value){
for (int i = 0; i < N; i++){
if (arr[i] == value){
return i;
}
}
return -1;
}
函数:find2()
int find2(int value){
for (int i = 0, j = N - 1; i <= j; i++, j--){
if (arr[i] == value){
return i;
}
if (arr[j] == value){
return j;
}
}
return -1;
}