AcWing算法基础课---第一讲基础算法---01排序
2022/8/23 1:55:12
本文主要是介绍AcWing算法基础课---第一讲基础算法---01排序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
快速排序
步骤
- 确定分界点:q[l], q[(l+r)/2], q[r], 随机
- 调整区间
- 递归处理
void quick_sort(int q[], int l, int r) { if (l >= r) return; //递归结束条件 int i = l - 1, j = r + 1, x = q[l + r >> 1]; //定义i, j指针, 确定分界点x(一般取中间值) 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); }
归并排序
步骤
- 确定分界点 mid
- 递归排序left, right
- 归并---合二为一
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, i = l, j = mid + 1; while (i <= mid && j <= r) { if (q[i] < q[j]) temp[k ++] = q[i ++]; else temp[k ++] = q[j ++]; } while (i <= mid) temp[k ++] = q[i ++]; while (j <= r) temp[k ++] = q[j ++]; for (int i = l, j = 0; i <= r; i ++, j ++) q[i] = temp[j]; }
这篇关于AcWing算法基础课---第一讲基础算法---01排序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升
- 2024-05-08代码报错不用愁,CodeGeeX一键完成代码修复、错误解释的功能上线了!