给定n个整数的数组A以及一个数x,设计一个分治算法,求出x在数组中出现的次数,并分析时间复杂度
程序员文章站
2022-03-13 12:50:36
...
public class fenzhiForNum {
public static void main(String[] args) {
int[] arr = {1,6,7,8,4,3,1,6,8,1,4};
System.out.println("1出现了"+count(arr, 0, 10, 1)+"次");
}
private static int count(int[] arr,int a,int b,int x){
int c;
if(a==b){
if(arr[a]==x){
return 1;
}else{
return 0;
}
}else{
c=(a+b)/2;
return (count(arr,a,c,1)+count(arr,c+1,b,1));
}
}
}
时间复杂度:
T(n) = O(1), n=1;
T(n) = 2T(n/2) + O(1), n>=2;