03
2018
09

散列

Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

03
2018
09

链表

链表

03
2018
09

队列

队列是一种先进先出的数据结构。

03
2018
09

栈是一种先进后出的数据结构

30
2018
08

计数排序

前边提到的排序都是比较排序,通过比较两个数的值来进行排序,比价排序的时间复杂度下界是O(nlgn),要想有更快的算法,就要抛弃比较的思想。

30
2018
08

快速排序

与归并排序一样,快速排序也使用了分治思想。快速排序最坏情况时间复杂度是O(n^2),平均时间复杂度是O(nlgn),而且O(nlgn)中隐含的常数因子很小,快速排序还是原址排序。

27
2018
08

Young(杨氏)矩阵

假定我们有一个mxn的矩阵,它的每一行以及每一列都是排好序的。我们可以称这个矩阵为Young tableaus(杨氏矩阵)。

27
2018
08

堆排序

(二叉)堆是一个数组。它可以看成一个近似的完全二叉树,树上的每一个节点对应数组中的一个元素。除了最底层外,该树是完全充满的,而且是从左向右填充。表示堆得数组A包括两个属性,A.length给出数组元素的个数,A.heapSize表示有多少个堆元素存储在该数组中。

23
2018
08

矩阵乘法的Strassen方法

两个n×n的矩阵相乘,按照定义来写算法,算法的时间复杂度是O(n³)。

Strassen算法是一个分治算法,可以将矩阵相乘的时间复杂度降为O(n^lg7)。

20
2018
08

最大子数组

寻找数组A的和最大的非空连续子数组。