[板子]排序模板
快速排序:
void quick_sort (int q[], int l, int r)
{
if (l>=r) return ;
int i=l-1, j=r+1;
int x = q[(i+j)>>1];
while (i<j)
{
do i++; while (q[i]<x);
do j--; while (q[j]>x);
if (i<j) swap(q[i], q[j]);
}
quick_sort(q, l, j);
quick_sort(q, j+1, r);
}
归并排序:
void merge_sort (int q[], int l, int r)
{
if (l>=r) return;
int mid = (l+r) >> 1;
merge_sort(q, l, mid);
merge_sort(q, mid+1, r);
int k=0;
int i=l, j=mid+1;
while (i<=mid && j<=r)
{
if (q[i]<q[j]) tmp[k++] = q[i++];
else tmp[k++] = q[j++];
}
while (i<=mid) tmp[k++] = q[i++];
while (j<=r) tmp[k++] = q[j++];
for (i=l, j=0; j!=k; ++j, ++i) q[i] = tmp[j];
}
逆序对的数量:
void merge_sort (int q[], int l, int r)
{
if (l>=r) return ;
int mid = (l+r) >> 1;
merge_sort(q, l, mid);
merge_sort(q, mid+1, r);
int i=l, j=mid+1;
int k = 0;
while (i<=mid && j<=r)
{
if (q[i]<=q[j]) tmp[k++] = q[i++];
else
{
tmp[k++] = q[j++];
ret += (mid - i + 1);
}
}
while (i<=mid) tmp[k++] = q[i++];
while (j<=r) tmp[k++] = q[j++];
for (i=l,j=0; j!=k; ++i,++j) q[i] = tmp[j];
}
分类:
板子
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!