小罗的算法学习路
Louie Luo
这个作者很懒,什么都没留下…
展开
-
【C++】 归并排序
归并排序的核心思想是分治,对于一个数列,设左端点 q[l] ,右端点 q[r] 1. 确定分界点。选择中心点作为分界点,即 mid = (l + r) / 2 。 2. 递归排序左右两段子列。 3. 归并——合二为一。 算法思想:在左侧子列头部取指针 i ,即 i = l ,在右侧子列头部取指针 j ,即 j = mid + 1 ,循环以下过程:比较 q[i] 和 q[j] 的大小,将较小者存入临时数列 tmp[] 中,同时较小者对应的指针++ 。循环过程直至 i > mid 或 j >原创 2022-04-15 14:25:06 · 302 阅读 · 0 评论 -
【C++】 快速排序
快速排序的核心思想是分治,对于一个数列,设左端点 q[l] ,右端点 q[r] 1. 确定分界点。对于快排来说,理论上选取数列的任意分解点都可以,常用的有q[l] ,q[r] ,q[(l + r) / 2] ,但是不同的选择可能会出现不同的边界条件问题,假设此处选择的分界点的值为 x 。 2. 调整区间。核心做法是要将数列分成以 x 为界的两段,x的左侧子列 ≤ x ≤ x的右侧子列,左右侧子列内部并不一定要有序。 算法思想:在数列头部取指针 i ,尾部取指针 j ,首先判断 i 指向的数据是否小于原创 2022-04-15 14:00:13 · 1109 阅读 · 0 评论