牛客网。

任何递归都不可以改成非递归,压栈。时间复杂度。如归并排序:T(n)=2xT(n/2)+O(1){mask公式,总的复杂度=子程序的复杂度+其他的。子程序不用往里迭代}

小和问题:逆序对:左边比当前小的,把整个数组所有这些加起来。想成右边有多少个数比当前数大。分治法

mid=(L+R)/2=L+(R-L)>>1

int merge(vector<int> data){
int count=0;
if(data.siz!e=0){
mergesort(data,0,data.size()-1)
}
return count;
}
mergesort(vector<int> a,int l,int r){
if(l<r){
int mid=(l+m)>>1;
mergesort(a,l,mid)
mergesort(a,mid+1,r)

hebing(a,l,mid,r){
vector<int> t;
int i=l;
int j=mid+1;
while(i<=mid&&j<=r){
if(a[i]>a[j]){
t.push_back(a[j++])
count++;
}
if(a[i]<a[j]){
t.push_back(a[i++])
}
while(i<=m)t.push_buck(a[i++]);
while(j<=r)t.push_back(a[j++];)
}
}

荷兰国旗:小于放左边 =放中间  大于放右边。

int partition(vector<int>arr,int l,int r,int num){
int less=l-1;
int more=r-l;
int cur=i;
while(cur<more){
if (arr[cur])
}
}

猜你喜欢

转载自blog.csdn.net/weixin_41982696/article/details/82146792