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-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享
- 2024-11-22ansible 的archive 参数是什么意思?-icode9专业技术文章分享
- 2024-11-22ansible 中怎么只用archive 排除某个目录?-icode9专业技术文章分享
- 2024-11-22exclude_path参数是什么作用?-icode9专业技术文章分享
- 2024-11-22微信开放平台第三方平台什么时候调用数据预拉取和数据周期性更新接口?-icode9专业技术文章分享
- 2024-11-22uniapp 实现聊天消息会话的列表功能怎么实现?-icode9专业技术文章分享
- 2024-11-22在Mac系统上将图片中的文字提取出来有哪些方法?-icode9专业技术文章分享
- 2024-11-22excel 表格中怎么固定一行显示不滚动?-icode9专业技术文章分享
- 2024-11-22怎么将 -rwxr-xr-x 修改为 drwxr-xr-x?-icode9专业技术文章分享
- 2024-11-22在Excel中怎么将小数向上取整到最接近的整数?-icode9专业技术文章分享