小灰的算法之旅—理论部分学习笔记

空间复杂度

递归是看深度的,有n层深度,就是O(n)。

循环队列(熟练掌握代码)

数据结构—散列表(哈希表)

哈希表本质上也是一个数组,它的原理是哈希函数,解决下标问题。

解决哈希冲突的方案

开放寻址法:

链表法:

扩容

二叉树(需要熟练掌握代码)

深度优先遍历:(前序中序后序)

创建二叉树和遍历二叉树都是用的递归:(链表方式)

前序遍历非递归方式:(栈)

通过pop出栈赋值给节点,实现往回走的逻辑:

广度优先遍历:(层序遍历)

使用队列完成:(非递归)

在输出这个节点的同时,将这个节点的左右孩子入队:

二叉堆(需要熟练掌握代码)

二叉堆是实现堆排序和优先队列的基础:

二叉堆的自我调整

1. 插入节点(上浮)

2. 删除节点(下沉)

3. 构建二叉堆

让所有非叶子节点“下沉”:

代码实现

二叉堆是用顺序存储的:

优先队列(需要熟练掌握代码)

优先队列的逻辑:

代码实现

排序算法(需要熟练掌握代码)

1. 冒泡排序

算法思想:

2. 代码实现

1)第一版代码

2)代码优化(第二版)

3)第三版

4)第四版优化(鸡尾酒排序)

算法思想:

代码实现:

3. 快速排序(需要熟练掌握代码)

快排是从冒泡排序演变而来的,其中用了分治的思想:

1)基准元素选择

2)元素的交换

3)代码实现(双边循环法—递归)

4)单边循环法(也是递归实现)

5)非递归方法

绝大多数的递归逻辑,都可以用栈的方式来代替:

4. 堆排序(熟练掌握代码)

1)代码实现

5. 计数排序(熟练掌握代码)

1)算法思想

2)代码实现(第一版)

3)第二版(优化)

问题 1 :

问题 2: 

代码实现:

局限性:

6. 桶排序(由计数排序演变)

代码实现:

注解:以上代码有些许错误之处,以下是GPT写的桶排序代码,大体一致:

复杂度:

局限性:

7. 排序算法总结

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值