Acwing算法基础课笔记
课程要求:课下理解并能根据模板题默写算法模板思想
基础算法
- 排序
-
快速排序 运用了分治的思想
x为分界点
①确定分界点 四个选择:q[l]/q[(l+r)/2]/q[r]/随机一个点
②调整区间,使得调整后的数组中x的左边的数值都小于等于x,右边的则相反
③递归上述步骤处理x的左右两段-
一种使用额外空间的做法:
1. 创建a[] b[]数组
2. q[l,r],扫描数组,小于分界x的放入a[],大于x的放入b[]
3.把a[] b[]依次放回q[] -
双指针做法(无需额外空间):
i,j一开始分别指向l,r 然后一边相对移动一边与分界值进行比较,当i的位置超过或者等于j的位置时,比较结束。
下述模板在最后两步的递归调用时应注意问题为,当分界值x取q[R]时,L=R-1, R = R,
-
-
点击查看代码
private staitc void quickSort(int[] arr, int left, int right){
if(left >= right) return;
int x = arr[(left + right) / 2],
i = left - 1, j = right + 1;
while(i < j){
do{
i++;
}while(arr[i] < x);
do{
j--;
}while(arr[j] > x);
if(i < j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
quickSort(arr, left, j);
quickSort(arr, j + 1, right);
}
```
* 归并排序
* 二分
* 整数
* 浮点数
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)