算法-美-塞奇威克-人民邮电出版社

2020-04-21  本文已影响0人  快给我饭吃

基础

本章介绍的是学习算法和数据结构所需要的基本工具。本书的算法是使用Java语言实现的,因此这一章讲了一些Java语言的基础。

我们关注的大多数算法都需要适当的组织数据,这就产生了数据结构,数据结构是算法的副产品或是结果。

排序

leetcode排序题目:https://leetcode-cn.com/problems/sort-an-array/submissions/

排序很重要。在计算时代早期,大家普遍认为30%的计算周期用在了排序上,如果今天这个比例降低了,可能的原因是如今的排序算法更加高效,而不是排序的重要性降低了。

排序的一种算法 -- 快速排序,被誉为20世纪科学和工程领域的十大算法之一。

大多数情况下,排序算法只需要两个操作,比较和交换。

重点:快速排序:它可能是应用最广泛的排序算法了。

LeetCode中排序时间对比:

十大经典排序算法:https://www.runoob.com/w3cnote/quick-sort-2.html

刚好是红宝书中算法的顺序。

堆排序:堆的结构应该需要满足,删除最大元素和插入元素两个方法,也叫优先队列。堆化的过程中涉及上浮和下沉。堆排序的几个步骤:

LeetCode中排序时间对比:

查找

leetcode查找算法题目:https://leetcode-cn.com/problems/binary-search/

查找一般会在有序的数据结构中进行才会比较高效,如有序数组,hash表,二叉查找树,红黑树。以下是leetcode中各排序的时间:

二叉查找树在最坏的情况可能存在线性关系,因此有平衡查找树。

红黑树和堆有点类似:

4种重要的图模型:无向图、有向图、加权图、加权有向图。

连通图通俗的讲,就是提起图中的任何一个顶点,都可以将图整个提起。如果图被分为两部分,则不是连通图。

树是一种连通图。树和图很像,API也类似。树中最重要的有left和right属性,获得左右节点,图中有adj方法,获得与该节点连接的所有结点。

最小生成树算法应用非常广泛。如电路和航空领域。

字符串

我们通过交流成串的字符进行沟通,所以无数的重要而熟悉的应用程序软件都是基于字符串处理的,除了通用的排序、查找算法,字符串有特有更高效的排序和查找算法。本章考察一些字符串的经典算法。

字符串排序:

字符串查找:

子字符串查找(leetcode)

正则表达式:非确定有限状态自动机NFA

背景

B树

上一篇 下一篇

猜你喜欢

热点阅读