【程序基础】学习算法路线整理(不断完善)

本文概述了学习算法的新路线,强调从基础的线性数据结构(数组和排序算法如冒泡、插入等)开始,深入探讨链式数据结构(单链表、双链表),并涉及链表与数组的结合(散列式结构)、树形和图结构,以及常用算法思想(如迭代、分治、递归等)。
摘要由CSDN通过智能技术生成

学习路线整理

新的改变

以前学习算法太过粗糙,感觉都是学得不够仔细,得好好认真去学习。有了这块功底,程序员好比就是习武之人打通任督二脉一样。往后都使用c++进行编写吧。。。。

线性结构

数组和排序

数组其实就是同一个元素在一个空间内进行连续储蓄的一种线性数据结构。
优点,主要是查找快速,由下标0开始,直接索引得到元素
缺点,插入数据时,需要多后面多个元素进行操作,操作不灵活。
在这里插入图片描述

数组排序类算法整理

冒泡排序
插入排序
选择排序
希尔排序
快速排序
归并排序
堆排序
桶排序

数组排序类算法的刷题

2500. 删除每行中的最大值
169.多数元素
217.存在重复元素
249.两个数组的交集
1460. 通过翻转子数组使两个数组相等
15.三数之和
179.最大数
75.颜色分类
268.丢失的数字
16. 最接近的三数之和

字符串处理

字符串其实就是char的数组。

字符串处理算法刷题

28. 找出字符串中第一个匹配项的下标
58.最后一个单词的长度
8.字符串转换整数

数组的查找算法

链式数据结构

链式结构也是线性结构的一种,和数组最大的区别就是,数组存储内存是连续的而链表是不连续的。这里优缺点显而易见,容易修改,比如把一个元素从链表中删除,不需要移动数组上面的每一个元素,只需要修改链表上面的指针指向,再使用指令回收掉对应链表元素的内存即可。我们每次读取上面的元素的时候,必须要从第一个开始去进行遍历。

单链表

结构很简单,就是每一个元素一个字段保存值,一个字段保存下一个元素地址的指针。
在这里插入图片描述

双链表

和单链表的区别就是每个元素多一个多一个指针指向上一个元素。
在这里插入图片描述

循环单双链表

就是单链表和双链表理解头元素和结尾元素的版本
在这里插入图片描述

链表算法的刷题

19.删除链表的倒数第 N 个结点
2. 两数相加
21. 合并两个有序链表

链表和数组的结合----散列式结构

树形结构

图结构

算法思想

迭代法
分治算法
递归法
动态规划
回溯
贪心算法

迭代法刷题

分治法刷题

递归刷题

动态规划刷题

1137. 第 N 个泰波那契数
746. 使用最小花费爬楼梯
198. 打家劫舍
62. 不同路径

回溯刷题

贪心算法刷题

3D数学基础

下面这些还在待整理

哈希表/散列表 (Hash Table)
散列函数
碰撞解决
字符串算法
排序
查找
BF算法
KMP算法
BM算法
正则表达式
数据压缩

二叉树
二叉查找树
伸展树(splay tree 分裂树)
平衡二叉树AVL
红黑树
B树,B+,B*
R树
Trie树(前缀树)
后缀树
最优二叉树(赫夫曼树)
二叉堆 (大根堆,小根堆)
二项树
二项堆
斐波那契堆(Fibonacci Heap)
图的算法
图的存储结构和基本操作(建立,遍历,删除节点,添加节点)
最小生成树
拓扑排序
关键路径
最短路径: Floyd,Dijkstra,bellman-ford,spfa
交换排序算法

查找算法
顺序表查找:顺序查找
有序表查找:二分查找
分块查找: 块内无序,块之间有序;可以先二分查找定位到块,然后再到块中顺序查找
动态查找: 二叉排序树,AVL树,B- ,B+ (这里之所以叫 动态查找表,是因为表结构是查找的过程中动态生成的)
哈希表: O(1)
15个经典基础算法
Hash
快速排序
快递选择SELECT
BFS/DFS (广度/深度优先遍历)
红黑树 (一种自平衡的二叉查找树)
KMP 字符串匹配算法
DP (动态规划 dynamic programming)
A*寻路算法: 求解最短路径
Dijkstra:最短路径算法 (八卦下:Dijkstra是荷兰的计算机科学家,提出”信号量和PV原语“,“解决哲学家就餐问题”,”死锁“也是它提出来的)
遗传算法
启发式搜索
图像特征提取之SIFT算法
傅立叶变换
SPFA(shortest path faster algorithm) 单元最短路径算法
海量数据处理
Hash映射/分而治之
Bitmap
Bloom filter(布隆过滤器)
Trie树
数据库索引
倒排索引(Inverted Index)
双层桶划分
外排序
simhash算法
分布处理之Mapreduce

算法设计思想

算法题目选编
这是一个算法题目合集,题目是我从网络和书籍之中整理而来,部分题目已经做了思路整理。问题分类包括:
字符串
堆和栈
链表
数值问题
数组和数列问题
矩阵问题
二叉树

海量数据处理
智力思维训练
系统设计

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值