//递归的写法
private static void sortdigv(int[] s,int n){
if(n >0){
sortdigv(s,n-1);
sort(s,n);
}
}
private static void sort(int[] s,int n){
int key = s[n];
int i = n-1;
while (i >=0 && s[i] > key){
s[i+1] = s[i];
i = i -1;
}
s[i +1] = key;
}
递归的计算时间复杂度
- 分解,计算数组的容量,分成n-1次,需要常量时间,即D(1) = θ(1);
- 递归,递归解1次n-1规模的子问题,时间为T(n-1) ;
- 合并,合并的运行时间为C(n-1) = θ(n);
T(n) = {θ(1)如果n=1;T(n-1)+θ(n) 如果n>1}
得证T(n) = θ(n2);