快速排序
快速排序
Firm归并排序
归并排序的介绍
是一种经典的基于分治策略的排序算法,其核心思想是将一个数组分成两个或多个子数组,对每个子数组进行排序,然后将排序好的子数组合并成一个最终的有序数组。
归并排序 ——-> 分治
步骤
- 确定分界点
- mid = (i+r)/2
- 递归排序
- 归并 —- 合二为一
确定分界点
- 分界点可以取任意值|中间值
对分开的值进行两边的递归排序
最后可以获得两组排好了的数据,将两组数据合二为一
下面用图示来具体分析过程
主要步骤
- 分别确定两指针从两端的数据头开始
1 | int k = 0, i = l, j = mid + 1; |
- 逐个取出数据后进行大小判断,再先后为temp赋值,temp为临时变量存储合二为一的数据
- 不断重复操作
1 | while (i <= mid && j <= r) { |
- 处理特殊情况左右两边数据大小不一致
1 | 左子数组:[1, 3, 5] |
代码表示
1 | while (i <= mid) { |
1 | 左子数组:[1, 4, 7, 8] |
代码表示
1 | while (j <= r) { |
- 再将临时变量数组里面的数据转存到初始数组中
1 | for (i = l, j = 0; i <= r; i++, j++) { |
代码模板
1 | void merge_sort(int q[], int l, int r) { |
評論
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果



