逆序对
定义:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。
解决:利用归并排序
时间复杂度O(nlogn)
void qiu(int l,int r) { if(l>=r) return; int mid=(l+r)/2; qiu(l,mid); qiu(mid+1,r); int ll=l,rr=mid+1,k=1; while(ll<=mid&&rr<=r) { if(a[ll]>a[rr]) { b[k]=a[rr]; rr++; k++; ans+=mid-ll+1; } else { b[k]=a[ll]; ll++; k++; } } while(ll<=mid) { b[k]=a[ll]; ll++; k++; } while(rr<=r) { b[k]=a[rr]; rr++; k++; } for(int i=l,j=1;i<=r;i++,j++) a[i]=b[j]; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步