啊哈算法-读书笔记

本书涉及的数据结构有栈、队列、树、并查集、堆和图等;算法有各种排序、枚举、深度和广度优先搜索、图上的遍历,当然还有图论中不可缺少的四种最短路径算法、两种最小生成树算法、割点与割边算法、二分图的最大匹配算法等。

排序

桶排序

时间复杂度O(N+M)

冒泡排序

冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。

从大到小排序。

冒泡排序的核心部分是双重嵌套循环。时间复杂度是O(N^2)。

快速排序

首先找一个数作为基准数,设置两个哨兵变量,指向序列最左边与最右边,找到右边小于基准数的数与左边大于基准数的数,两数交换,两哨兵变量相遇后,交换基准数与哨兵变量所指的数,然后对两哨兵变量左边与右边做相同的操作。

快速排序的每一轮处理其实就是将这一轮的基准数归为,直到所有的基准数都归为。

快速排序的最差时间复杂度和冒泡排序一样都是O(N^2),他的平均时间复杂度为O(NlogN)。

快速排序基于“二分”发。

排序算法还有选择排序、计数排序、基数排序、插入排序、归并排序、堆排序。堆排序是基于二叉树的排序。

栈、队列、链表

可使用两个数组模拟链表。第一个整数数组data是用来存放序列中的具体数字,另外一个整数数组right是用来存放当前序列中的每一个元素右边的元素在数组data中位置。

枚举

穷举法

万能的搜索

深度优先搜索

广度优先搜索

队列

图的遍历

也是用深度或广度优先搜索

可使用二维数组来存储

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赤龙绕月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值