数据结构和算法是计算机发展中纯编程模块重要的总结成果,常见算法和数据结构针对现有的计算机架构、常用业务场景、常见需求进行设计与归纳得出,单纯学习算法的过程比较困难,学习过程也较费劲,需要极大的意志力和兴趣支持。
个人和这块知识的过往
CS专业出身,大概本科三年级学习该内容,虽然也有实践,敲过各类算法,数据结构,却只是停留在大概印象层面。
校招找工作阶段,好好“刷了一波题”,经过自发努力,当时也多少可以AC部分题目。
终于,工作一段时间,不得不反思,总结了,痛定思痛,写吧。
数据结构暂不涉及,多撸题,慢慢就差不多了,本文以算法为主,本文不配图,如有需要自行搜索,有图可以帮助加速理解。
1. 排序算法
以快速排序为例——JDK中的容器在sort时使用该算法,以堆排序为例——曾经面试被问过,没意识到还有这。
1.1快速排序(升序)
a.在区间start,end内,以第一个数为基准值;
b.从末尾往前找小于基准值的数,放置在基准值位置;
c.从第一个数开始找大于于基准值的数,找到则放置在上一个被移动的位置上;
d.循环bc,直到start==end,得到基准值位置pos;
分别对start,pos-1 区间 和 pos+1,end区间递归处理
1.2堆排序:
- 根节点是最值
- R[i].lchild = R[2 * i + 1]
- R[i].rchild = R[2 * i + 2]

本文深入探讨了快速排序和堆排序这两种经典算法。通过实例详细解释了快速排序的分治策略以及堆排序的构建、出堆、入堆过程。此外,还提及了二叉查找树的概念。这些内容对于理解和应用数据结构与算法至关重要。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



